Skip to content

Component visibility

Canonical page for showing or hiding a component from row values, what the user just typed, or the logged-in user.

Visibility is evaluated from FilteringFieldSourceType:

Source Enum Meaning
Always show NONE No extra rule.
Row ROW Use the saved Notion values on the record.
User input USER_INPUT Use the in-progress form values (create/update).
Logged-in user LOGGED_IN_USER Use the Users database fields of the current user.

Use ROW on details and on forms when the rule should follow what is already stored. Use USER_INPUT when revealing “Describe the incident” after the user sets Type = Incident before save. Use LOGGED_IN_USER when only Admins should see an internal notes field.

When not to use component visibility:

  • Hiding a whole screen — use Screen Visibility.
  • Hiding rows — use Data restriction or list filters.
  • Security for a field you still send to the client — visibility is UX. Do not put secrets in a “hidden” component.
  1. The fields you compare exist and are synced.
  2. For LOGGED_IN_USER, the app is private and the Users database has that property.
  1. Select the component.
  2. Open Visibility.
  3. Choose source ROW, USER_INPUT, or LOGGED_IN_USER.
  4. Add conditions (equals, not empty, contains, …) joined by AND / OR.
  5. Preview with View as and by changing the driving field on the form.
  6. Publish.
Control Options What it does
Source NONE / ROW / USER_INPUT / LOGGED_IN_USER Where values come from.
Connector AND / OR How conditions combine.
Field Property id What you compare.
Operator / value Condition The rule.
Copy/paste logic Builder Reuse the same rule on another component.

If the rule fails, the component is not shown. Required hidden fields still fail submit if they are empty — unset required on fields that can hide.

  • USER_INPUT only helps on forms. On details it behaves like row data.
  • Nested formula/rollup in the condition picker may be disabled. See the relation logic-picker troubleshooting page.
  • Guests have no logged-in user. LOGGED_IN_USER hides the component for them.

On Add request, Long text “Incident details” is visible when USER_INPUT Type equals Incident. Internal “Cost” number is visible when LOGGED_IN_USER Role equals Staff.

Symptom Likely cause What to do
Field never shows Condition too tight, or source is ROW on a create form with empty row Use USER_INPUT on create.
Submit blocked Hidden + required Turn off required.
Works in builder, not live Not published Publish.

Screen-level: Screen Visibility. Forms: Type of Components.