diff --git a/__tests__/src/components/CaptionedCanvasThumbnail.test.js b/__tests__/src/components/CaptionedCanvasThumbnail.test.js
index fc97e2d1614d6f56e0ce4e64bc9b41933fbafd13..7cf01ab2d55322480f61017270f0b4be583947cd 100644
--- a/__tests__/src/components/CaptionedCanvasThumbnail.test.js
+++ b/__tests__/src/components/CaptionedCanvasThumbnail.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import Typography from '@material-ui/core/Typography';
 import { CaptionedCanvasThumbnail } from '../../../src/components/CaptionedCanvasThumbnail';
 import manifestJson from '../../fixtures/version-2/019.json';
diff --git a/__tests__/src/components/GalleryView.test.js b/__tests__/src/components/GalleryView.test.js
index dfee35e03a582ea42a7dec907cf9da705814afc3..4fde53a3cf52b0e38188be4b0d740b429105ec9d 100644
--- a/__tests__/src/components/GalleryView.test.js
+++ b/__tests__/src/components/GalleryView.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import Paper from '@material-ui/core/Paper';
 import manifestJson from '../../fixtures/version-2/019.json';
 import { GalleryView } from '../../../src/components/GalleryView';
diff --git a/__tests__/src/components/GalleryViewThumbnail.test.js b/__tests__/src/components/GalleryViewThumbnail.test.js
index 9c895fdbf2643e3bf68a1144c47ae4a202d6f45c..2e6c0d2016c17caa32b22a0edcb14c208da1f103 100644
--- a/__tests__/src/components/GalleryViewThumbnail.test.js
+++ b/__tests__/src/components/GalleryViewThumbnail.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import Chip from '@material-ui/core/Chip';
 import Typography from '@material-ui/core/Typography';
 import manifestJson from '../../fixtures/version-2/019.json';
diff --git a/__tests__/src/components/OpenSeadragonViewer.test.js b/__tests__/src/components/OpenSeadragonViewer.test.js
index 41dcf0f0cf52d52d02fadc3c334c8229f0f94c79..97069a35691072c9261152bc4aa583b9f69e79bf 100644
--- a/__tests__/src/components/OpenSeadragonViewer.test.js
+++ b/__tests__/src/components/OpenSeadragonViewer.test.js
@@ -1,7 +1,7 @@
 import React from 'react';
 import { shallow } from 'enzyme';
 import OpenSeadragon from 'openseadragon';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import { OpenSeadragonViewer } from '../../../src/components/OpenSeadragonViewer';
 import OpenSeadragonCanvasOverlay from '../../../src/lib/OpenSeadragonCanvasOverlay';
 import Annotation from '../../../src/lib/Annotation';
diff --git a/__tests__/src/components/ThumbnailCanvasGrouping.test.js b/__tests__/src/components/ThumbnailCanvasGrouping.test.js
index fbb4f0b039b172e369de7e2fc2d5615533caf7ee..402aab350c0d2d79d993f12f0a86ce462f5eb13f 100644
--- a/__tests__/src/components/ThumbnailCanvasGrouping.test.js
+++ b/__tests__/src/components/ThumbnailCanvasGrouping.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import { ThumbnailCanvasGrouping } from '../../../src/components/ThumbnailCanvasGrouping';
 import CaptionedCanvasThumbnail from '../../../src/containers/CaptionedCanvasThumbnail';
 import CanvasGroupings from '../../../src/lib/CanvasGroupings';
diff --git a/__tests__/src/components/ThumbnailNavigation.test.js b/__tests__/src/components/ThumbnailNavigation.test.js
index e0fa0b41e00b532ba4a8270c21071f7cecb0a68b..f56a0a1884c7fa38e267c1e6f39a7077ce94917d 100644
--- a/__tests__/src/components/ThumbnailNavigation.test.js
+++ b/__tests__/src/components/ThumbnailNavigation.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import { ThumbnailNavigation } from '../../../src/components/ThumbnailNavigation';
 import ThumbnailCanvasGrouping from '../../../src/containers/ThumbnailCanvasGrouping';
 import CanvasGroupings from '../../../src/lib/CanvasGroupings';
diff --git a/__tests__/src/components/WindowSideBarCanvasPanel.test.js b/__tests__/src/components/WindowSideBarCanvasPanel.test.js
index 80cdf4b0ec43e525d9d22799ca7e6680cdca7d07..352351e177f9219ed15f26f5258dcd3d736f58b1 100644
--- a/__tests__/src/components/WindowSideBarCanvasPanel.test.js
+++ b/__tests__/src/components/WindowSideBarCanvasPanel.test.js
@@ -3,7 +3,7 @@ import { shallow } from 'enzyme';
 import List from '@material-ui/core/List';
 import ListItem from '@material-ui/core/ListItem';
 import Typography from '@material-ui/core/Typography';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import { WindowSideBarCanvasPanel } from '../../../src/components/WindowSideBarCanvasPanel';
 import { CanvasThumbnail } from '../../../src/components/CanvasThumbnail';
 import CompanionWindow from '../../../src/containers/CompanionWindow';
diff --git a/__tests__/src/components/WindowViewer.test.js b/__tests__/src/components/WindowViewer.test.js
index df2cd1165cf8525c17d9f66c8f704c46a822bd0d..e66d6814e8d9947dd2890feee88c94d948f8e666 100644
--- a/__tests__/src/components/WindowViewer.test.js
+++ b/__tests__/src/components/WindowViewer.test.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import { shallow } from 'enzyme';
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import { WindowViewer } from '../../../src/components/WindowViewer';
 import OSDViewer from '../../../src/containers/OpenSeadragonViewer';
 import WindowCanvasNavigationControls from '../../../src/containers/WindowCanvasNavigationControls';
diff --git a/__tests__/src/lib/CanvasWorld.test.js b/__tests__/src/lib/CanvasWorld.test.js
index 642ec590edfc4f6e3098f4972220d04de8449345..2ee550416f3321b88d4771addf54a24fe8d137a5 100644
--- a/__tests__/src/lib/CanvasWorld.test.js
+++ b/__tests__/src/lib/CanvasWorld.test.js
@@ -1,4 +1,4 @@
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import fixture from '../../fixtures/version-2/019.json';
 import CanvasWorld from '../../../src/lib/CanvasWorld';
 
diff --git a/__tests__/src/lib/ManifestoCanvas.test.js b/__tests__/src/lib/ManifestoCanvas.test.js
index c0811417ce989c4180042c31e81021a28f505762..06a5e058da6c6b6bd3eee528e0ba664b66b693c7 100644
--- a/__tests__/src/lib/ManifestoCanvas.test.js
+++ b/__tests__/src/lib/ManifestoCanvas.test.js
@@ -1,4 +1,4 @@
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import ManifestoCanvas from '../../../src/lib/ManifestoCanvas';
 import fixture from '../../fixtures/version-2/019.json';
 import v3fixture from '../../fixtures/version-3/001.json';
diff --git a/__tests__/src/selectors/manifests.test.js b/__tests__/src/selectors/manifests.test.js
index 3e4b4d9415d55f0466914a976b3f252bea722525..fe444de3a3e79c629c81811ccf68dd25858809a3 100644
--- a/__tests__/src/selectors/manifests.test.js
+++ b/__tests__/src/selectors/manifests.test.js
@@ -1,4 +1,4 @@
-import manifesto from 'manifesto.js';
+import manifesto from 'manifesto.js/dist-esmodule';
 import manifestFixture001 from '../../fixtures/version-2/001.json';
 import manifestFixture002 from '../../fixtures/version-2/002.json';
 import manifestFixture015 from '../../fixtures/version-2/015.json';
diff --git a/package.json b/package.json
index 6b7690da9de17da63625d70e761cca39609786ff..51f1ed68c3a188e51d70c36cd68fd7228bf19dc9 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,7 @@
     "immutable": "^4.0.0-rc.12",
     "intersection-observer": "^0.7.0",
     "lodash": "^4.17.11",
-    "manifesto.js": "^3.0.11",
+    "manifesto.js": "./manifesto",
     "node-fetch": "^2.6.0",
     "node-sass": "^4.12.0",
     "normalize-url": "^4.2.0",
@@ -67,7 +67,8 @@
     "redux-thunk": "^2.3.0",
     "reselect": "^4.0.0",
     "sass-loader": "^7.1.0",
-    "uuid": "^3.3.2"
+    "uuid": "^3.3.2",
+    "vedavaapi-web": "0.0.7"
   },
   "devDependencies": {
     "@babel/cli": "^7.5.0",
diff --git a/src/lib/ManifestoCanvas.js b/src/lib/ManifestoCanvas.js
index 74a5e324fdd175bd1b98dbb85898877782347fd0..633406e59b509d347e129bc718f874b1ece2d7d9 100644
--- a/src/lib/ManifestoCanvas.js
+++ b/src/lib/ManifestoCanvas.js
@@ -1,5 +1,5 @@
 import flatten from 'lodash/flatten';
-import { Utils } from 'manifesto.js';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
 /**
  * ManifestoCanvas - adds additional, testable logic around Manifesto's Canvas
  * https://iiif-commons.github.io/manifesto/classes/_canvas_.manifesto.canvas.html
diff --git a/src/state/actions/annotation.js b/src/state/actions/annotation.js
index ec03963ce8ec525f1592f311ec9c4738b10aac4e..cfc47abbcaae4f81a21832c03fd9e3ecd9eee9fd 100644
--- a/src/state/actions/annotation.js
+++ b/src/state/actions/annotation.js
@@ -1,4 +1,4 @@
-import fetch from 'node-fetch';
+import { fetch } from 'vedavaapi-web';
 import ActionTypes from './action-types';
 
 /**
diff --git a/src/state/actions/auth.js b/src/state/actions/auth.js
index 72b1e2316adb0236eb853b91e25b716e6366d870..7421e173d1603f3fa717fb5fcfa50eb778701a89 100644
--- a/src/state/actions/auth.js
+++ b/src/state/actions/auth.js
@@ -1,4 +1,4 @@
-import { Utils } from 'manifesto.js';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
 import ActionTypes from './action-types';
 import { fetchInfoResponse } from './infoResponse';
 
diff --git a/src/state/actions/infoResponse.js b/src/state/actions/infoResponse.js
index 8bbb0977c144cc7c458171e0ca7510b5676ba317..22cd9c0f88b799bab8a6f8c5a51f4c04a30ba64b 100644
--- a/src/state/actions/infoResponse.js
+++ b/src/state/actions/infoResponse.js
@@ -1,5 +1,5 @@
-import fetch from 'node-fetch';
-import { Utils } from 'manifesto.js';
+import { fetch } from 'vedavaapi-web';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
 import ActionTypes from './action-types';
 
 /**
diff --git a/src/state/actions/manifest.js b/src/state/actions/manifest.js
index 577a8e4e60376a9262e4c3110b0c299aafe619c0..bbfd665eca5d7b7954b63ee04ba38edc0bbc501a 100644
--- a/src/state/actions/manifest.js
+++ b/src/state/actions/manifest.js
@@ -1,4 +1,4 @@
-import fetch from 'node-fetch';
+import { fetch } from 'vedavaapi-web';
 import ActionTypes from './action-types';
 
 /**
diff --git a/src/state/actions/search.js b/src/state/actions/search.js
index 358e981fb1fc2759dac63e18d8512c0467dcf84e..403c5b4746259d8c9771b8d729b3a86b3197e965 100644
--- a/src/state/actions/search.js
+++ b/src/state/actions/search.js
@@ -1,4 +1,4 @@
-import fetch from 'node-fetch';
+import { fetch } from 'vedavaapi-web';
 import {
   getCanvasForAnnotation,
   getCanvas,
diff --git a/src/state/reducers/accessTokens.js b/src/state/reducers/accessTokens.js
index 03ee2bed7957de9622d77701f09a33d227e01536..18199d404c4eda2d24ffcff2a95564e598a4ba73 100644
--- a/src/state/reducers/accessTokens.js
+++ b/src/state/reducers/accessTokens.js
@@ -1,6 +1,6 @@
 import normalizeUrl from 'normalize-url';
 
-import { Utils } from 'manifesto.js';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
 import ActionTypes from '../actions/action-types';
 
 /** */
diff --git a/src/state/selectors/canvases.js b/src/state/selectors/canvases.js
index 62536af904b73206793be7a1abd57864557f5811..60c01bc9389bb13579ca58efa692f9634ca4b3ec 100644
--- a/src/state/selectors/canvases.js
+++ b/src/state/selectors/canvases.js
@@ -1,5 +1,5 @@
 import { createSelector } from 'reselect';
-import { Utils } from 'manifesto.js';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
 import CanvasGroupings from '../../lib/CanvasGroupings';
 import { getManifestoInstance } from './manifests';
 import { getWindow, getWindowViewType } from './windows';
diff --git a/src/state/selectors/manifests.js b/src/state/selectors/manifests.js
index e6fe70f08dd523d433db09a495d8c8b4de2f7a8e..1e233d68ad2a85c74bc41a8a23a4a9873fe66ba4 100644
--- a/src/state/selectors/manifests.js
+++ b/src/state/selectors/manifests.js
@@ -1,11 +1,12 @@
 import { createSelector } from 'reselect';
-import manifesto, { LanguageMap } from 'manifesto.js';
+import { Utils } from 'manifesto.js/dist-esmodule/Utils';
+import { LanguageMap } from 'manifesto.js/dist-esmodule/LanguageMap';
 import ManifestoCanvas from '../../lib/ManifestoCanvas';
 
 /** */
 function createManifestoInstance(json, locale) {
   if (!json) return undefined;
-  return manifesto.create(json, locale ? { locale } : undefined);
+  return Utils.parseManifest(json, locale ? { locale } : undefined);
 }
 
 
diff --git a/src/state/selectors/searches.js b/src/state/selectors/searches.js
index b7db4da53b5894e94cf5403b4dfe0f4e57e499b5..288f0e563c7744c370e6a7a417d36ca3f337a302 100644
--- a/src/state/selectors/searches.js
+++ b/src/state/selectors/searches.js
@@ -1,5 +1,5 @@
 import { createSelector } from 'reselect';
-import { LanguageMap } from 'manifesto.js';
+import { LanguageMap } from 'manifesto.js/dist-esmodule/LanguageMap';
 import flatten from 'lodash/flatten';
 import Annotation from '../../lib/Annotation';
 import { getCanvas, getCanvases } from './canvases';
diff --git a/webpack.config.js b/webpack.config.js
index 8e008757cfbfa1df08ac6f09b3659ebee6f4f8a6..4d8ced7b8235ca45daf12990f87c867db239c424 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -18,6 +18,12 @@ const babelLoaderConfig = {
 const baseConfig = [
   {
     entry: './src/index-core.js',
+    externals: {
+      'fetch-cookie/node-fetch': 'fetchCookieWrapper',
+      'form-data': 'formData',
+      'node-fetch': 'nodeFetch',
+      url: 'nodeUrl',
+    },
     module: {
       rules: [
         babelLoaderConfig,
@@ -32,6 +38,12 @@ const baseConfig = [
   },
   {
     entry: './src/index.js',
+    externals: {
+      'fetch-cookie/node-fetch': 'fetchCookieWrapper',
+      'form-data': 'formData',
+      'node-fetch': 'nodeFetch',
+      url: 'nodeUrl',
+    },
     module: {
       rules: [
         babelLoaderConfig,