io.select.singleNative
One choice in the browser's own drop-down.
io.select.singleNative asks to pick one option from the browser's own <select>. The list that opens is drawn by the browser and the operating system. It suits short lists, such as a role or a plan. The handler gets the chosen option itself, not a string.
The simplest one
The whole action file, and roughly what your team sees when it runs.
Change plan
What you can set
The settings you will reach for most, each with the line of code that turns it on.
The browser's own select. A plain <select>, nothing drawn on top. The menu that opens is the one the system draws.
Made for short lists. No search as you type and no × to clear. For a long list, use io.select.single.
Records from your database. Name rows with key and label. The handler gets the record back, relations and dates included.
A starting choice by id. defaultValue takes the option or just its key. The id stored on a record is enough.
Optional when you say so. The field is required by default. Chain .optional() and an empty field gives undefined.
Checked on the server. A value that was not offered is sent back. .validate() adds a check of your own after that.
More in the docs
This page shows the idea. The docs have every prop, the checks on the server and more examples.
Next components
Three more calls on io. Each one shows a control and hands your code a typed value.
Write your first tool today.
An async function, a few await calls, and the form is in the browser.