> For the complete documentation index, see [llms.txt](https://docs.notionapps.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.notionapps.com/screens-and-components/component-visibility.md).

# 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`:

| 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](https://docs.notionapps.com/screens-and-components/customize-a-screen/screen-visibility).
* Hiding rows — use [Data restriction](https://docs.notionapps.com/users/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

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.

## Build it

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.

## Every control

| 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. |

## 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_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.

## 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

| 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.                    |

## Related

Screen-level: [Screen Visibility](https://docs.notionapps.com/screens-and-components/customize-a-screen/screen-visibility). Forms: [Type of Components](https://docs.notionapps.com/screens-and-components/type-of-components).
