diff --git a/src/client/components/form/radios.vue b/src/client/components/form/radios.vue
index 4cfb7c247e9453f10537a67ef3a745f14d213bad..b660c37ace8d26dd0ddab3442b7bcc081debd0a6 100644
--- a/src/client/components/form/radios.vue
+++ b/src/client/components/form/radios.vue
@@ -27,7 +27,10 @@ export default defineComponent({
 	},
 	render() {
 		const label = this.$slots.desc();
-		const options = this.$slots.default();
+		let options = this.$slots.default();
+
+		// なぜかFragmentになることがあるため
+		if (options.length === 1 && options[0].props == null) options = options[0].children;
 
 		return h('div', {
 			class: 'cnklmpwm _formItem'
@@ -37,7 +40,7 @@ export default defineComponent({
 			}, label),
 			...options.map(option => h('button', {
 				class: '_button _formPanel _formClickable',
-				key: option.props.value,
+				key: option.key,
 				onClick: () => this.value = option.props.value,
 			}, [h('span', {
 				class: ['check', { checked: this.value === option.props.value }],
diff --git a/src/client/components/tab.vue b/src/client/components/tab.vue
index 5e54fc968eba50f8e1a2ef6279f98b545a42ca04..3902b7f98f2fa4f9d3044ac7c05cae5905ba12e8 100644
--- a/src/client/components/tab.vue
+++ b/src/client/components/tab.vue
@@ -14,7 +14,7 @@ export default defineComponent({
 			class: 'pxhvhrfw',
 		}, options.map(option => withDirectives(h('button', {
 			class: ['_button', { active: this.value === option.props.value }],
-			key: option.props.value,
+			key: option.key,
 			disabled: this.value === option.props.value,
 			onClick: () => {
 				this.$emit('update:value', option.props.value);
diff --git a/src/client/components/ui/radios.vue b/src/client/components/ui/radios.vue
index 547e616ea52d65b2088ffd70b7e5ed51ae6ed0aa..8a62b876831f96635fd8147cacd3f0aa78813690 100644
--- a/src/client/components/ui/radios.vue
+++ b/src/client/components/ui/radios.vue
@@ -23,14 +23,17 @@ export default defineComponent({
 	},
 	render() {
 		const label = this.$slots.desc();
-		const options = this.$slots.default();
+		let options = this.$slots.default();
+
+		// なぜかFragmentになることがあるため
+		if (options.length === 1 && options[0].props == null) options = options[0].children;
 
 		return h('div', {
 			class: 'novjtcto'
 		}, [
 			h('div', label),
 			...options.map(option => h(MkRadio, {
-				key: option.props.value,
+				key: option.key,
 				value: option.props.value,
 				modelValue: this.value,
 				'onUpdate:modelValue': value => this.value = value,