diff --git a/packages/common/src/fixtures/select/5-select-types.xml b/packages/common/src/fixtures/select/5-select-types.xml
new file mode 100644
index 000000000..ec005d468
--- /dev/null
+++ b/packages/common/src/fixtures/select/5-select-types.xml
@@ -0,0 +1,187 @@
+
+
+
+ Select types
+
+
+
+ yes
+
+
+ explicit string
+ implicit string
+ 123
+ 45.67
+
+
+
+ explicit string
+ implicit string
+ 123
+ 45.67
+
+
+
+
+
+
+ -
+ implicit string
+
+
+ -
+ explicit string
+
+
+ -
+ updated string
+
+
+
+
+ -
+ implicit
+
+
+ -
+ explicit
+
+
+ -
+ updated
+
+
+ -
+ string
+
+
+
+
+
+
+ -
+ 123
+
+
+ -
+ 10
+
+
+ -
+ 23
+
+
+ -
+ 89
+
+
+
+
+
+
+ -
+ 45.67
+
+
+ -
+ 89
+
+
+ -
+ 10
+
+
+ -
+ 23.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+ yes
+
+ -
+
+ no
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/web-forms/src/components/FormQuestion.vue b/packages/web-forms/src/components/FormQuestion.vue
index d5bf0519f..d8ea43bc5 100644
--- a/packages/web-forms/src/components/FormQuestion.vue
+++ b/packages/web-forms/src/components/FormQuestion.vue
@@ -3,8 +3,8 @@ import type {
AnyControlNode,
AnyInputNode,
AnyNoteNode,
+ AnySelectNode,
AnyUnsupportedControlNode,
- SelectNode,
} from '@getodk/xforms-engine';
import { inject } from 'vue';
import InputControl from './controls/Input/InputControl.vue';
@@ -19,7 +19,7 @@ type ControlNode = AnyControlNode | AnyUnsupportedControlNode;
defineProps<{ question: ControlNode }>();
const isInputNode = (node: ControlNode): node is AnyInputNode => node.nodeType === 'input';
-const isSelectNode = (node: ControlNode): node is SelectNode => node.nodeType === 'select';
+const isSelectNode = (node: ControlNode): node is AnySelectNode => node.nodeType === 'select';
const isNoteNode = (node: ControlNode): node is AnyNoteNode => node.nodeType === 'note';
const isRangeNode = (node: ControlNode) => node.nodeType === 'range';
const isTriggerNode = (node: ControlNode) => node.nodeType === 'trigger';
diff --git a/packages/web-forms/src/components/controls/Select1Control.vue b/packages/web-forms/src/components/controls/Select1Control.vue
index 3aaba66b3..15d58abf1 100644
--- a/packages/web-forms/src/components/controls/Select1Control.vue
+++ b/packages/web-forms/src/components/controls/Select1Control.vue
@@ -1,5 +1,5 @@
diff --git a/packages/web-forms/src/components/controls/SelectNControl.vue b/packages/web-forms/src/components/controls/SelectNControl.vue
index 4862d420e..51363bc20 100644
--- a/packages/web-forms/src/components/controls/SelectNControl.vue
+++ b/packages/web-forms/src/components/controls/SelectNControl.vue
@@ -1,5 +1,5 @@
@@ -19,16 +18,16 @@ const selectValues = (values: readonly string[]) => {