Commercial SupportGuaranteed response times on Shiny bug fixes, straight from the maintainers. Plans from US$1,500 a year.Guaranteed response times on Shiny bug fixes, straight from the maintainers. Plans from US$1,500 a year.See the plans
AI Conversations, Speech, & Audio ReleaseHave a full conversation with AI, use speech commands, and interact with audio content seamlessly.Have a full conversation with AI, use speech commands, and interact with audio content seamlessly.
BLE Hubs 1.0Think SignalR for BLE!Think SignalR for BLE!Hub it up!
UniHub 1.0Universal Hubs - SignalR Styled Hub BLE or HTTP - Why not both!?Universal Hubs - SignalR Styled Hub BLE or HTTP - Why not both!?YES PLEASE!
Biometrics
The biometrics bridge shows the platform’s own biometric prompt to the page, for example to unlock a vault or confirm a
sensitive action. It’s built on Shiny.Biometrics.
On iOS, add NSFaceIDUsageDescription to Info.plist. Without it, prompting on a Face ID device answers
409 cannot_prompt. Android and Windows need nothing. See Shiny.Biometrics.
Available, NotSupported (no hardware), NotEnrolled, LockedOut (the passcode unlocks it), PasscodeNotSet (Apple), Unavailable (busy, disconnected or disabled by policy), SecurityUpdateRequired (Android)
types
The hardware present, even when nothing is enrolled: Fingerprint, Face, Iris, or Unknown for Windows Hello. Apple reports one, Android every sensor the device declares
isDeviceCredentialSet
A passcode, PIN or pattern is set, so allowDeviceCredential has something to fall back to
Use types to label the button: “Face ID”, “Touch ID”, “Fingerprint” or “Windows Hello”. ?strength=Weak asks Android
about class 2 biometrics, which includes most camera-based face unlock.
What the device can do right now (hardware, enrollment, lockout, passcode), with no UI. On Android, strength is the class of biometric the page will ask for.
The hardware present, reported even when nothing is enrolled or biometrics are locked out. Apple reports one type, Android every sensor the device declares, and Windows Unknown.
isDeviceCredentialSet
boolean
A passcode, PIN or pattern is set, so allowDeviceCredential has something to fall back to.
Shows the platform prompt. A cancel, lockout or missing enrollment is a result (status), not an error. Fails with 400 when the reason is empty or longer than 256 characters, and with 409 cannot_prompt when the app has nothing to show the prompt from (no Android activity, or an iOS app missing NSFaceIDUsageDescription).
Why the page is asking; shown in the prompt on every platform. Required, at most 256 characters.
title
string | null
Android: the prompt title (defaults to reason).
subtitle
string | null
Android: a line under the title.
cancelText
string | null
Apple and Android: the cancel button.
fallbackText
string | null
Apple: the button shown after a failed match. Null keeps the system "Enter Password" and an empty string hides it. With allowDeviceCredential off, tapping it returns Fallback.
allowDeviceCredential
boolean
Accept the passcode, PIN or pattern too. Windows Hello always offers its PIN.
The hardware present, reported even when nothing is enrolled or biometrics are locked out. Apple reports one type, Android every sensor the device declares, and Windows Unknown.
isDeviceCredentialSet
boolean
A passcode, PIN or pattern is set, so allowDeviceCredential has something to fall back to.
Why the page is asking; shown in the prompt on every platform. Required, at most 256 characters.
title?
string | null
Android: the prompt title (defaults to reason).
subtitle?
string | null
Android: a line under the title.
cancelText?
string | null
Apple and Android: the cancel button.
fallbackText?
string | null
Apple: the button shown after a failed match. Null keeps the system "Enter Password" and an empty string hides it. With allowDeviceCredential off, tapping it returns Fallback.
allowDeviceCredential?
boolean
Accept the passcode, PIN or pattern too. Windows Hello always offers its PIN.