Grid, Board & Gallery
The main surface for working with a table's records: a spreadsheet-style grid with inline editing and full keyboard navigation, plus Board and Gallery layouts that show the same records grouped into columns or laid out as cards.
Switch views
Every table opens in the grid. The tabs above the table switch how the same records are shown: Grid, Board, and Gallery render right here, while Calendar, Timeline, and Map open their own pages.
Whichever layout you pick, you're looking at the same underlying records — a change made in the grid shows up on the board and in the gallery too. A record count sits at the right end of the toolbar, and the grid's footer shows both records and fields.
The grid loads more rows as you scroll — there is no page size to click past. Everything the toolbar does (filtering, searching, grouping, totals, export) still works over the whole table, not just the rows that have arrived.
Create records
Click New record at the top right to open a full form. The first box is your table's first field — that's what names the record, so it's what appears in the grid's leftmost column, in lookups and in relationships. Reorder your fields on Edit fields to change which one that is. Each field gets an input matched to its type; a relation field shows + Link a record, which opens the same picker the grid uses — search the whole related table, link as many records as the field allows, or type a name that doesn't exist yet and choose Create “…”. Lookup and rollup fields are computed automatically, so they don't appear in the form.
For quick capture, use the row at the bottom of the grid: type a name and press Enter to add the record instantly, ready for the next one. Pressing ↓ past the last row drops you straight into this box, and Esc clears it. The quick-add row only appears when your role lets you create records in this table.
Edit cells in the grid
Click a cell once to select it, then click again (or press Enter) to edit. You can also just start typing — the cell opens with your text replacing the old value — or double-click to edit immediately.
Each field type gets the right editor: select fields open a dropdown of their options, yes/no fields offer a Yes/No choice, dates get a date picker, and numeric types like rating (0–5) and percent (0–100) are kept within range. While editing, Enter saves and moves down (in a long-text field it adds a new line instead — press Tab or click away to save), Tab saves and starts editing the next cell to the right (Shift+Tab goes left), Esc cancels, and clicking away saves too. Changes save immediately — there's no separate save step — and the Updated column refreshes on the spot.
Relation cells work differently: double-click one (or click it while it's selected) to open the link picker. It searches the whole related table — type to narrow, scroll for more, and the footer says how many matches are still off screen. Current links show as chips you can remove with ×, ↑↓ and Enter work without the mouse, and typing a name that doesn't exist offers Create “…”. Press Done or click away to save; a field set to Just one saves the moment you pick, replacing the old link. Esc is the one thing that abandons the change. Lookup and rollup cells are computed from linked records and can't be edited directly. Cells that are read-only for your role show a Read-only for your role hint and never open an editor.
Select a range, copy, paste, and fill
The cursor stretches into a rectangle: hold Shift with the arrow keys, Shift-click another cell, or press and drag across cells. Ctrl+A selects the whole page; Esc collapses back to one cell.
Ctrl+C copies the rectangle in a format Excel and Sheets understand, and Ctrl+V pastes a block straight from them — a whole column of statuses, a grid of numbers — starting at the selection's top-left corner. Pasting one value onto a selected range fills the range. Delete clears every editable cell in the selection, Ctrl+D fills the selection down from its top row, and the small square at the selection's corner is a fill handle — drag it down to repeat the selected values over the rows below, alternating pattern and all.
Every one of these lands as a single undoable step, and the toast offers Undo on the spot. Cells you can't write — computed fields, sealed records, fields that are read-only for your role — are skipped and counted, never mangled.
Share a view with people outside RowFold
Press Share in the toolbar to publish the view you're looking at as a read-only web page. Anyone with the link can open it — no RowFold account, no seat, nothing to install. It's the way to give a client a live status page or a supplier their own order list without inviting them in.
The link starts switched off: you choose the title, whether visitors may download a CSV, and an optional expiry, then press Create public link. What gets published is exactly the columns and filters you can see at that moment, and that list is frozen — adding a column to the table tomorrow does not widen a link you shared today. Re-save the panel when you do want the new column included.
Some things never travel: attachments (visitors see a file count, never the files), anything about a person beyond their name (a person column shows the names of the members in it, never an email address, and somebody who has left the workspace shows as nobody), and nothing on the page links back into RowFold. Turn the link off at any time, or press New URL to replace it — the old address stops working immediately, which is what you want the moment a link has been forwarded somewhere it shouldn't have been. Sharing is an Admin action and every publish and revoke is recorded in the audit log.
Share works from every view surface, not just the grid — the button is in the same toolbar on the calendar, timeline and map, and publishes the same view object. The public page always renders as a table, whatever shape the view uses inside RowFold.
Search, group, and shape the columns
The search box in the toolbar scans every cell of every row — server-side, across the whole table, not just the rows on screen. It narrows whatever filters are active rather than replacing them, and the export always matches what you're looking at. If you can change the view, you can also type a filter as words — where Status is Open — and the box turns it into filter chips instead of searching for it; the RQL article has the details.
Group collects rows under headers by almost any field — a date, a price, a city, a checkbox, a single-select. A select leads with its own option order; everything else is ordered by value, so grouping by price runs 20, 100, 300 rather than 100, 20, 300. Headers carry whole-table counts, and clicking one collapses its rows (your collapse is your own — it doesn't change the view for anyone else). It groups by a link too, when the link holds one record — Tasks by Project is a grouped grid rather than a second view — and by a lookup through such a link, or by a rollup's total, which offers the same band widths a number does. What can't group: a link that can hold several records, and multi-select, people and attachment fields, because a row would belong under several headers; and a formula, whose value is worked out as the page loads.
Nest rows instead of grouping them when a table links to itself — a Parent, a Reports to, a Part of. If the table has a link to its own records that holds one record, the Group menu offers Or nest rows: each record then sits under its parent, as deep as the links go (up to 20 levels), and Stop nesting puts the flat list back. A view nests or groups, not both, so choosing one turns the other off.
Columns chooses which fields this view shows and in what order, plus how tall a row is. There are four heights: Compact and Comfortable fit a cell on one line, while Tall shows two lines of a long value and Extra tall shows four, wrapping instead of cutting off. Wrapping comes with the height rather than as a separate switch, because at one line there is nowhere to wrap to. Taller rows also show more of a link field's chips before they collapse into a count. These save to the view itself, so a shared view changes for everyone — which is why on a shared view they're an admin call. Anyone else gets offered a personal view instead: your own columns, filters, sorting and grouping on the same table, visible only to you.
Put rows in your own order
Some lists have no column that says what order they belong in — a backlog, a running order, a shortlist. Sort by Manual order and each row gets a grip in its row-number cell: drag a row to where it belongs and it stays there, for everyone who opens the view, because the position is saved against the record.
It works on a phone — the grip is its own small target, so a swipe anywhere else on the row still scrolls the grid — and from the keyboard: focus a grip and use the arrow keys, which is also the quickest way to move a row a long way. Manual order is an ordinary sort, so it can sit alongside others, and a view that doesn't use it orders exactly as before.
Size, pin and reorder the columns
Drag the right-hand edge of a header to make a column wider or narrower, or double-click that edge to fit it to what's actually in it. Drag a header itself to move the column.
Widths belong to the view, not to your browser, so the layout you set travels — to your other machine, to your colleagues, and to anyone opening a link you've published, where the layout is the whole artefact and there is no browser of theirs to remember it. Sizing a shared view is a view edit and takes the same permission as hiding a column; if you don't have it, your widths still stick, they just stay yours.
Freeze holds columns still while the rest scrolls sideways. It's a boundary rather than a per-column switch — the menu reads Freeze through this column, so picking the third one holds the first three — because a frozen column pins to the left edge and freezing the fifth while the first four scrolled would drop it on top of them. Nothing is frozen by default. The boundary counts the columns as this view renders them, so hiding or reordering one moves it with the layout instead of stranding it. The checkbox and row number always pin either way.
Totals at the foot of a column
Summarise in the toolbar (or any column's own menu) puts an aggregate in a row pinned to the bottom of the grid. Numbers offer sum, average, min, max and median; dates offer earliest and latest; checkboxes offer checked, unchecked and % checked; and every field type offers filled, empty, % filled, % empty and unique values.
The figure is worked out by the database over every row the view matches, not over the rows currently loaded — which is the point of having it, and the reason it doesn't climb as you scroll further down.
When the grid is grouped, each group carries its own totals in its header rather than in a row underneath, so they stay readable when the group is collapsed — which is where a group total earns its keep.
Computed columns total too. A rollup always totals as a number; a formula totals as the kind of value it produces — a number, a checkbox or text; and a lookup totals as the field it shows, when its link reaches a single record. The one that can't is a lookup across a link to several records, whose cell is a list rather than a value, and a formula RowFold can't work out in the database offers no total rather than a wrong one. A summary with no answer shows — rather than 0, because 0 is a claim about your data.
Show a field from a linked table
A view can borrow a column from a table it links to — Company → Region, Supplier → Lead time — without changing the schema. Open Columns, choose Add linked column, then click through the relationships and tap the field you want.
It behaves like any other column for width, freezing, reordering and CSV export, and it belongs to this view only — which is what lets any member add one to a personal view, where adding a Lookup field would be an admin decision for the whole table.
See Linked columns: showing a field from a related table for the full picture : what it can and can’t do, how it differs from a Lookup, and how to filter by the same route.
Filter and sort
Click Filter to add a condition: pick a field, choose a condition, and enter a value. Conditions match the field's type — text offers contains, starts with, and ends with; numbers get comparisons like ≥ and ≤; dates offer is before and is after; select fields show their options as clickable pills. Most types also offer is empty and is not empty.
Each active filter becomes a chip in the bar — click a chip to edit it, or its ✕ to remove it. With two or more filters, a toggle appears to switch between AND (all must match) and OR (any can match).
Click Sort to order by up to four levels — sort by Status, then by Due date within each status. Each level gets its own numbered chip, or just click a column header: once for ascending, again for descending, a third time to clear; Shift-click a header to add it as another level instead of replacing the sort. Arrows (numbered when sorting by more than one field) show on the sorted headers. Until you sort, records are listed most recently updated first.
Everything in this section is the same control on the calendar, timeline and map — one toolbar, one saved view. A filter you write here is already applied when you switch to the calendar, and one written there is applied when you come back. Sorting is the exception: it stays on the grid, because the other views impose their own order.
Select rows and act in bulk
Tick the checkbox at the start of a row to select it, or the checkbox in the header row to select everything. A bar appears showing how many records are selected, with three actions: Delete moves them to the Trash after a confirmation (you can restore them from there), Export CSV downloads the checked rows as a spreadsheet-ready file named after the table, and ✕ Clear deselects.
Bulk delete only touches records you're allowed to delete — anything outside your permissions is quietly skipped.
The export writes exactly what you selected — including rows you haven't scrolled to, after Select all N matching. Linked records export as their names rather than internal ids, computed columns export their values, and the file has the same columns in the same order as the view you asked from.
Work with the Board
The Board groups records into columns using a single-select field you choose — one column per option, plus an Unassigned column for records with no value yet (or a value that no longer matches any option). Each column header shows a count.
Drag a card to another column and its select field is written to that column's value; dropping it on Unassigned clears the field. Cards are only draggable if you're allowed to edit that field — a card you can't drop anywhere is never offered as one you can drag. Click a card instead to peek at the full record.
If the table has no single-select field with options, the Board tab shows the grid instead.
Split the Board into swim lanes
Columns answer what stage is this in. Swim lanes answer whose is it — pick a second field (an owner, a priority, a client) from Swim lanes above the board and it splits into a row per value, with the columns still running across each one. Records with nothing in that field keep a lane of their own rather than being hidden, since "nobody has picked these up" is usually the row worth looking at.
• Dragging a card sideways moves it along the columns, as before.
• Dragging it down into another lane writes the lane's field instead.
• A diagonal drag does both in one gesture. Only the fields that actually changed are written, so a move within a lane never re-stamps a value the record already had.
Lanes can use a select, a person or a linked-record field, and they're configured on the board itself — it's the only screen where you can see what a lane would do. Set it back to one lane to get a plain board again.
Browse the Gallery
The Gallery lays records out as cards: a large monogram tile, the record's name, and the fields the view is set to show. It's a comfortable way to scan a table visually. Click any card to peek at the record.
Choose what a card shows
Board and Gallery cards draw the same field list the rest of the view uses: open Fields in the toolbar and tick what belongs on a card. Until you pick, a card shows the first few fields it has values for, and the panel says so.
• Empty fields are skipped before the limit, not after, so a record whose first fields happen to be blank still fills its card from the ones that have values.
• A card shows up to five fields and then says +N more. Ticking a sixth isn't ignored — it moves into that count, and it's on the record itself.
• Linked columns work here too, so a booking's card can show the client's phone number without that column existing on Bookings.
The same list feeds calendar events, so choosing fields once shapes every surface that draws a record rather than a row.
Peek without leaving the view
Press Space on a selected cell to slide open the peek drawer — or click a board or gallery card. In the grid, clicking a row's number opens it too, as does the expand icon that appears on the name cell while it's selected. The drawer shows the record's fields and lets you edit them in place, plus Activity (a history of changes) and Graph (a map of linked records) tabs, and buttons to star or watch the record.
Clicking a linked record inside the drawer stacks a new sheet on top like paper — the one you came from stays full width underneath with a sliver showing, and clicking that sliver takes you back to it. A breadcrumb trail and a ← Back button do the same. Show full record jumps to the record's dedicatedpage, and Esc closes the drawer — with stacked panels it steps back one panel at a time.
Scrolling a long table
The grid keeps loading as you scroll — there's no page to turn. Rows are added, never swapped out, so your cell cursor, your selection and your place on the page all survive. A Load more link at the foot does the same thing if you'd rather click, and it still works with JavaScript off.
The record count at the foot is always the whole result set, and says how many of them are loaded so far.
Tips
• Click a column header to sort: once for ascending, twice for descending, a third time to clear.
• Type over a selected cell to replace its value — no need to press <kbd>Enter</kbd> first.
• <kbd>Ctrl/⌘ + D</kbd> repeats the value from the cell above — the fastest way to fill a column one row at a time.
• With two or more filters, click the <strong>AND</strong>/<strong>OR</strong> chip to switch between all-must-match and any-can-match.
• Hover the ↗, ◎, and Σ icons in column headers to see what a relation, lookup, or rollup field does.
• Double-click the right-hand edge of a column header to fit it to its contents; drag that edge to set a width by hand. Widths save to the view, so everyone opening it sees the same layout.
• Freezing reads "through this column" — pick the third column to hold the first three still. Nothing is frozen until you ask for it.
• Column totals are computed over every matching row, not the rows on screen, so scrolling further never changes the number.
Good to know
• Filters and sorts you set are held in the page address until someone who can change the view presses <strong>Save to “…”</strong>, so a reload keeps them and a copied link carries them — but opening the view afresh, or switching to another view, starts from what that view has saved.
• A Board needs a single-select field with options to group by. Until one is chosen — or if the field it used is later converted to another type — the Board asks you to pick one rather than guessing.
• A Board card is only draggable if you're allowed to edit the field the board groups by — if a card won't pick up, that's why, and the same goes for a swim lane you can't write. The move is re-checked on the server either way.
• A card shows up to five fields and then says +N more — a card is a summary, not the whole record, so open the peek drawer for everything. Empty fields are skipped before that limit rather than after, so a blank early field never costs a card its content.
• Delete and Backspace clear a cell immediately with no confirmation. The record's name is the exception: it can't be cleared, and saving an empty name restores the previous one.
• Deleting records sends them to the Trash rather than destroying them — restore from there if you slip.
• There are two CSV exports and they answer different questions: the toolbar's Export writes every row the view matches, while the bulk bar's writes only the rows you've selected. Both export what the grid displays — linked record names and computed values, not the raw stored ids.
• Column widths save to the VIEW, so a resize is something everyone opening it sees — if you'd rather it didn't, resize a personal view instead. Starred records are still per-browser and don't follow you to another device.
Who can do what
• Only members of the table's workspace can open it; everyone else gets a not-found page. A per-table 'no access' override hides the table the same way.
• Admins and Editors can create, edit, and delete records. Contributors can view and create but not edit or delete. Viewers are read-only.
• Per-table overrides (full, read and create, read-only, no access) and per-field overrides (read-only, hidden) can widen or narrow the role baseline for individual people.
• Fields hidden for you are removed from the grid, Board, and Gallery entirely — not just visually collapsed.
• Cells you can't edit are marked with a 'Read-only for your role' hint and never open an editor; the server refuses the change as well.
• The quick-add row at the bottom of the grid appears only when you can create records in the table.
• Bulk delete silently skips records in tables you don't have delete permission for.