🙈Component visibility
Canonical page for showing or hiding a component from row values, what the user just typed, or the logged-in user.
What this is / when to use it
Visibility is evaluated from FilteringFieldSourceType:
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.
Before you start
The fields you compare exist and are synced.
For
LOGGED_IN_USER, the app is private and the Users database has that property.
Build it
Select the component.
Open Visibility.
Choose source
ROW,USER_INPUT, orLOGGED_IN_USER.Add conditions (equals, not empty, contains, …) joined by
AND/OR.Preview with View as and by changing the driving field on the form.
Publish.
Every control
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.
What users see
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.
Limits and plans
USER_INPUTonly 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_USERhides the component for them.
Example
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.
Fix problems
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.
Related
Screen-level: Screen Visibility. Forms: Type of Components.
Last updated