diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index dbf51c08c5..801d2cf5fa 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -25,10 +25,11 @@ export async function masterMain() {
 	// initialize app
 	try {
 		greet();
-		showEnvironment();
 		showServerInfo();
+		showEnvironment();
 		showNodejsVersion();
 		await connectDb();
+		await updateMetaCache();
 	} catch (e) {
 		bootLogger.error(
 			`Fatal error occurred during initialization:\n${inspect(e)}`,
diff --git a/packages/client/src/instance.ts b/packages/client/src/instance.ts
index f4ea4d431e..4092a901c0 100644
--- a/packages/client/src/instance.ts
+++ b/packages/client/src/instance.ts
@@ -6,7 +6,65 @@ import { set, get } from "idb-keyval";
 // TODO: 他のタブと永続化されたstateを同期
 
 // TODO: get("instance") requires top-level await
-let instance: entities.DetailedInstanceMetadata;
+// TODO: fallback to defaults more nicely
+// default values
+let instance: entities.DetailedInstanceMetadata = {
+	maintainerName: "",
+	maintainerEmail: "",
+	version: "",
+	name: null,
+	uri: "",
+	tosUrl: null,
+	description: null,
+	disableRegistration: true,
+	disableLocalTimeline: false,
+	disableGlobalTimeline: false,
+	disableRecommendedTimeline: true,
+	enableGuestTimeline: false,
+	driveCapacityPerLocalUserMb: 1000,
+	driveCapacityPerRemoteUserMb: 0,
+	antennaLimit: 5,
+	enableHcaptcha: false,
+	hcaptchaSiteKey: null,
+	enableRecaptcha: false,
+	recaptchaSiteKey: null,
+	swPublickey: null,
+	maxNoteTextLength: 3000,
+	maxCaptionTextLength: 1500,
+	enableEmail: false,
+	enableServiceWorker: false,
+	markLocalFilesNsfwByDefault: false,
+	emojis: [],
+	ads: [],
+	langs: [],
+	moreUrls: {},
+	repositoryUrl: "https://firefish.dev/firefish/firefish",
+	feedbackUrl: "https://firefish.dev/firefish/firefish/-/issues",
+	defaultDarkTheme: null,
+	defaultLightTheme: null,
+	defaultReaction: "⭐",
+	cacheRemoteFiles: false,
+	proxyAccountName: null,
+	emailRequiredForSignup: false,
+	mascotImageUrl: "",
+	bannerUrl: "",
+	backgroundImageUrl: "",
+	errorImageUrl: "",
+	iconUrl: null,
+	requireSetup: false,
+	translatorAvailable: false,
+	features: {
+		registration: false,
+		localTimeLine: true,
+		recommendedTimeLine: false,
+		globalTimeLine: true,
+		searchFilters: true,
+		hcaptcha: false,
+		recaptcha: false,
+		objectStorage: false,
+		serviceWorker: false,
+	},
+};
 
 export function getInstanceInfo(): entities.DetailedInstanceMetadata {
 	return instance;
@@ -27,13 +85,9 @@ export async function updateInstanceCache(): Promise<void> {
 		detail: true,
 	});
 
-	// TODO: set default values
-	instance = {} as entities.DetailedInstanceMetadata;
-
 	for (const [k, v] of Object.entries(meta)) {
 		instance[k] = v;
 	}
-
 	set("instance", JSON.stringify(instance));
 }