diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 923ae69022..d8525ba114 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -73,11 +73,7 @@ router.get(/^\/sw\.(.+?)\.js$/, async ctx => {
 });
 
 // Manifest
-router.get('/manifest.json', async ctx => {
-	await send(ctx as any, '/assets/manifest.json', {
-		root: client
-	});
-});
+router.get('/manifest.json', require('./manifest'));
 
 router.get('/robots.txt', async ctx => {
 	await send(ctx as any, '/assets/robots.txt', {
diff --git a/src/server/web/manifest.ts b/src/server/web/manifest.ts
new file mode 100644
index 0000000000..35d3d1b666
--- /dev/null
+++ b/src/server/web/manifest.ts
@@ -0,0 +1,16 @@
+import * as Koa from 'koa';
+import * as manifest from '../../client/assets/manifest.json';
+import * as deepcopy from 'deepcopy';
+import fetchMeta from '../../misc/fetch-meta';
+
+module.exports = async (ctx: Koa.BaseContext) => {
+	const json = deepcopy(manifest);
+
+	const instance = await fetchMeta();
+
+	json.short_name = instance.name || 'Misskey';
+	json.name = instance.name || 'Misskey';
+
+	ctx.set('Cache-Control', 'max-age=300');
+	ctx.body = json;
+};