Call sv_required() to generate a validation function that ensures an input value is present. By default, the definition of "is present" is based on input_provided().

sv_required(message = "Required", test = input_provided)



The validation error message to be displayed if the test does not pass.


A single-argument function, or single-sided formula (using . to access the value to test), that returns TRUE for success and FALSE for failure.


A function suitable for use as an InputValidator$add_rule() rule.

See also

The sv_optional() function, which takes a different approach to field presence.

Other rule functions: compose_rules(), sv_between(), sv_email(), sv_equal(), sv_gte(), sv_gt(), sv_in_set(), sv_integer(), sv_lte(), sv_lt(), sv_not_equal(), sv_numeric(), sv_optional(), sv_regex(), sv_url()


## Only run examples in interactive R sessions
if (interactive()) {


ui <- fluidPage(
  textInput("name", "Name")

server <- function(input, output, session) {
  # Validation rules are set in the server, start by
  # making a new instance of an `InputValidator()`
  iv <- InputValidator$new()

  # Basic usage: ensure that `input$name` is present,
  # and return a terse validation message if not
  iv$add_rule("name", sv_required())

  # Finally, `enable()` the validation rules

shinyApp(ui, server)


# There are some alternatives to the above example,
# and the following snippets can serve to replace
# the `iv$add_rule(...)` statement

# (1) Providing a custom message to display
# when validation fails:

# iv$add_rule("email", sv_required("An email is required"))

# (2) Providing a `test` argument to change
# the definition of "is present"; in this
# snippet, any non-NULL value will be accepted:

# iv$add_rule("choices", sv_required(test = is.null))