You control whether app users can Add, Delete, or Edit rows in a table. You can specify combinations of these options for each table in the Data > Tables tab of the Editor.
Separate permissions can be chosen for Table Slices (Data > Slices tab), but they must be at least as strict as the permissions of the original table.
In advanced scenarios, you can use an expression to dynamically compute the update mode. Click on the flask icon to set up the expression. There are two common use cases for dynamic update modes:
To allow some users to make updates but restrict this functionality for others
To allow updates for some rows but restrict updates for other rows
Allow Adds but do not show existing rows
In some apps (like public apps that are used to collect data from anonymous users), you may want to capture new data (i.e. allow Adds) but not show any existing data. There is a convenient 'Hide Existing Rows' option to set this up. You can find this option in the Security section of the Table definition (Data > Tables tab). If you enable this option for a table, none of the existing rows are read.