Decimal fields show a keypad with no decimal key on iOS

1. What is the issue? Please be detailed.

When a user taps a decimal field on iOS, the keypad includes a decimal key, so values like 2.5 can be entered.

On iOS, decimal fields open the digits-only number pad, which has no decimal key. Users can't enter decimal values at all. The same forms work on Android, because Android numeric keyboards include a . key.

The region is en-US, so this isn't a comma-versus-dot locale problem. The decimal key is missing entirely.

2. What steps can we take to reproduce this issue?

Form (XML or XLSX file): odk-ios-bug-example.xlsx (23.0 KB)

Steps:

  1. Upload the form to Central and enable ODK Web Forms (recommended)
  2. Open the form on an iPhone (Safari).
  3. Tap the decimal question.
  4. The keypad shows digits only, with no decimal key.

3. What have you tried to fix the issue?

N/A

4. Upload any forms or screenshots you can share publicly below.

Web Forms version: shipped with Central v2026.2.2

5. Likely root cause

The rendered input ends up with inputmode="numeric", and iOS's numeric pad has no decimal key.

  • InputNumeric.vue sets fractionalDigits = { min: 0, max: 13 } for decimals.

  • PrimeVue InputNumber (4.3.3) picks the input mode like this:

    inputmode: mode === "decimal" && !minFractionDigits ? "numeric" : "decimal"
    
    

    Because minFractionDigits is 0, that resolves to "numeric".

  • InputNumeric.vue tries to override it with pt: { input: { root: { inputMode } } }. That key is camelCase while PrimeVue sets lowercase inputmode, and judging by the behaviour on iOS, PrimeVue's "numeric" wins.

Thank you for doing such a deep investigation on this! I'll have a look today.