diff --git a/src/client/app/common/views/components/visibility-chooser.vue b/src/client/app/common/views/components/visibility-chooser.vue
index cc9c75095e..8be3ddb8f6 100644
--- a/src/client/app/common/views/components/visibility-chooser.vue
+++ b/src/client/app/common/views/components/visibility-chooser.vue
@@ -44,7 +44,12 @@ import Vue from 'vue';
 import * as anime from 'animejs';
 
 export default Vue.extend({
-	props: ['source', 'compact', 'v'],
+	data() {
+		return {
+			v: this.$store.state.device.visibility
+		}
+	},
+	props: ['source', 'compact'],
 	mounted() {
 		this.$nextTick(() => {
 			const popover = this.$refs.popover as any;
@@ -92,6 +97,7 @@ export default Vue.extend({
 	},
 	methods: {
 		choose(visibility) {
+			this.$store.commit('device/setVisibility', visibility);
 			this.$emit('chosen', visibility);
 			this.$destroy();
 		},
diff --git a/src/client/app/desktop/views/components/post-form.vue b/src/client/app/desktop/views/components/post-form.vue
index ea51144173..d5d160bd8f 100644
--- a/src/client/app/desktop/views/components/post-form.vue
+++ b/src/client/app/desktop/views/components/post-form.vue
@@ -99,7 +99,7 @@ export default Vue.extend({
 			useCw: false,
 			cw: null,
 			geo: null,
-			visibility: 'public',
+			visibility: this.$store.state.device.visibility || 'public',
 			visibleUsers: [],
 			autocomplete: null,
 			draghover: false,
@@ -326,8 +326,7 @@ export default Vue.extend({
 
 		setVisibility() {
 			const w = (this as any).os.new(MkVisibilityChooser, {
-				source: this.$refs.visibilityButton,
-				v: this.visibility
+				source: this.$refs.visibilityButton
 			});
 			w.$once('chosen', v => {
 				this.visibility = v;
diff --git a/src/client/app/mobile/views/components/post-form.vue b/src/client/app/mobile/views/components/post-form.vue
index 702bc4c9e1..466ca393d5 100644
--- a/src/client/app/mobile/views/components/post-form.vue
+++ b/src/client/app/mobile/views/components/post-form.vue
@@ -94,7 +94,7 @@ export default Vue.extend({
 			files: [],
 			poll: false,
 			geo: null,
-			visibility: 'public',
+			visibility: this.$store.state.device.visibility || 'public',
 			visibleUsers: [],
 			useCw: false,
 			cw: null,
@@ -240,8 +240,7 @@ export default Vue.extend({
 		setVisibility() {
 			const w = (this as any).os.new(MkVisibilityChooser, {
 				source: this.$refs.visibilityButton,
-				compact: true,
-				v: this.visibility
+				compact: true
 			});
 			w.$once('chosen', v => {
 				this.visibility = v;
diff --git a/src/client/app/store.ts b/src/client/app/store.ts
index f85253a281..7e2cc3976b 100644
--- a/src/client/app/store.ts
+++ b/src/client/app/store.ts
@@ -110,6 +110,10 @@ export default (os: MiOS) => new Vuex.Store({
 						src: x.src,
 						arg: x.arg
 					};
+				},
+
+				setVisibility(state, visibility) {
+					state.visibility = visibility;
 				}
 			}
 		},