diff --git a/app/assets/javascripts/import/manifest/import_manifest_file_app.vue b/app/assets/javascripts/import/manifest/import_manifest_file_app.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7fe57282f3e91ca872e7124e6fd5e570d00a5a31
--- /dev/null
+++ b/app/assets/javascripts/import/manifest/import_manifest_file_app.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ content }}
+
+
+
+
+
+ {{ uploadError }}
+
+
+ {{ __('Import multiple repositories by uploading a manifest file.') }}
+
+
+
+
+
+
+ {{ __('Go back') }}
+
+
+
+
+ {{ __('List available repositories') }}
+
+
+
+
diff --git a/app/assets/javascripts/import/manifest/index.js b/app/assets/javascripts/import/manifest/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..f1669979301ebd76b21f3d7b25492c23134c0329
--- /dev/null
+++ b/app/assets/javascripts/import/manifest/index.js
@@ -0,0 +1,27 @@
+import Vue from 'vue';
+import ImportManifestFileApp from './import_manifest_file_app.vue';
+
+export function initManifestImportProjectForm() {
+ const el = document.getElementById('js-vue-import-manifest-file-app');
+
+ if (!el) {
+ return null;
+ }
+
+ const { backButtonPath, formPath, statusImportManifestPath, namespaceId } = el.dataset;
+
+ const props = {
+ backButtonPath,
+ formPath,
+ statusImportManifestPath,
+ namespaceId: namespaceId ? parseInt(namespaceId, 10) : null,
+ };
+
+ return new Vue({
+ el,
+ name: 'ImportManifestFileRoot',
+ render(h) {
+ return h(ImportManifestFileApp, { props });
+ },
+ });
+}
diff --git a/app/assets/javascripts/pages/import/manifest/new/index.js b/app/assets/javascripts/pages/import/manifest/new/index.js
index 0bb70a7364e99b2f7c98b5d6c3051a25ff1ac229..ccb6429250f44f300486408615a9599bfc879c85 100644
--- a/app/assets/javascripts/pages/import/manifest/new/index.js
+++ b/app/assets/javascripts/pages/import/manifest/new/index.js
@@ -1,3 +1,6 @@
import { initNewProjectUrlSelect } from '~/projects/new';
+import { initManifestImportProjectForm } from '~/import/manifest';
+// initNewProjectUrlSelect can be removed here when the FF :new_project_creation_form gets removed
initNewProjectUrlSelect();
+initManifestImportProjectForm();
diff --git a/app/assets/javascripts/projects/new_v2/components/import_project_form.vue b/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
index 3824ab085f47c80d92d09dc9fcaef0731a9e81c7..bfb23cc94de5a248b73c4c9de4f72844b8b0837f 100644
--- a/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
+++ b/app/assets/javascripts/projects/new_v2/components/import_project_form.vue
@@ -1,6 +1,7 @@