diff --git a/src/client/app/desktop/script.ts b/src/client/app/desktop/script.ts
index 10b929ff3f..845f8ee5c0 100644
--- a/src/client/app/desktop/script.ts
+++ b/src/client/app/desktop/script.ts
@@ -60,7 +60,7 @@ init(async (launch, os) => {
 					});
 					if (o.cb) vm.$once('closed', o.cb);
 				} else {
-					this.$root.new(() => import('./views/components/post-form-window.vue').then(m => m.default), {
+					this.$root.newAsync(() => import('./views/components/post-form-window.vue').then(m => m.default), {
 						reply: o.reply,
 						mention: o.mention,
 						animation: o.animation == null ? true : o.animation
diff --git a/src/client/app/init.ts b/src/client/app/init.ts
index 6d95f61e65..da7baff4fe 100644
--- a/src/client/app/init.ts
+++ b/src/client/app/init.ts
@@ -449,25 +449,24 @@ export default (callback: (launch: (router: VueRouter) => [Vue, MiOS], os: MiOS)
 					getMetaSync: os.getMetaSync,
 					signout: os.signout,
 					new(vm, props) {
-						if (typeof vm === 'function') {
-							return new Promise((res) => {
-								vm().then(vm => {
-									const x = new vm({
-										parent: this,
-										propsData: props
-									}).$mount();
-									document.body.appendChild(x.$el);
-									res(x);
-								});
+						const x = new vm({
+							parent: this,
+							propsData: props
+						}).$mount();
+						document.body.appendChild(x.$el);
+						return x;
+					},
+					newAsync(vm, props) {
+						return new Promise((res) => {
+							vm().then(vm => {
+								const x = new vm({
+									parent: this,
+									propsData: props
+								}).$mount();
+								document.body.appendChild(x.$el);
+								res(x);
 							});
-						} else {
-							const x = new vm({
-								parent: this,
-								propsData: props
-							}).$mount();
-							document.body.appendChild(x.$el);
-							return x;
-						}
+						});
 					},
 					dialog(opts) {
 						const vm = this.new(Dialog, opts);
diff --git a/src/client/app/mobile/script.ts b/src/client/app/mobile/script.ts
index 24453bd26c..d33bafbb0f 100644
--- a/src/client/app/mobile/script.ts
+++ b/src/client/app/mobile/script.ts
@@ -50,7 +50,7 @@ init((launch, os) => {
 					document.documentElement.style.overflow = 'auto';
 				}
 
-				this.$root.new(() => import('./views/components/post-form-dialog.vue').then(m => m.default), {
+				this.$root.newAsync(() => import('./views/components/post-form-dialog.vue').then(m => m.default), {
 					reply: o.reply,
 					mention: o.mention,
 					renote: o.renote