Support Notion page tables across all layouts - #137
Open
mvletter wants to merge 2 commits into
Open
Conversation
mvletter
marked this pull request as ready for review
August 18, 2026 08:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
table_rowchild blocks from the Notion API.User-visible behavior
Notion page tables now support:
!, that cell is rendered with inverse colors.Compact layouts show an explicit
+N rowsor+N colssummary instead of silently dropping content.Layout limits
The limits below describe displayed rows and columns, including any overflow summary:
The full layout provides the largest table preview. Every layout reports when the source exceeds its available rows or columns.
Implementation notes
get_page_blocks(table_id, page_size: 100).table_rowchildren are ignored.has_morestate is preserved; a trailing+in a row summary marks the displayed count as a lower bound.table_width:table_widthis absent.<table>,<thead>,<tbody>,<th>, and<td>markup.--text-ui-scaleand--content-scale.Validation
lib/notion/notion.rb.trmnlplint passes for the parity fixture.Rollout note
This repository mirrors the native plugin implementation. If the production source of truth remains the TRMNL core repository, the corresponding change should be applied or synced there before announcing table support.
Help Center update required
The current Notion Help Center article still lists tables and their child blocks as unsupported and recommends avoiding tables.
When this change is deployed, please update that article using the copy below.
Ready-to-publish Help Center changes
1. Add after the “Page Display Type” section
Tables
Tables on Notion pages are supported. TRMNL fetches the rows belonging to a top-level table block and distributes the rows and columns evenly across the available screen space.
Supported table features include:
!to display that cell using inverse colorsThe Page Item Limit controls the number of top-level page blocks fetched. Table rows are fetched separately, up to 100 rows per table. If Notion reports additional rows beyond that response, the overflow summary uses a trailing
+to indicate that its count is a lower bound.Pages containing a renderable table use a single-column presentation so headings and table geometry remain in source order. The Multi-Column Display setting continues to apply to pages without tables.
The full-screen layout provides the largest table preview. Smaller mashup layouts display a more compact preview. When rows or columns do not fit, the final displayed row or column reports the omitted amount using
+N rowsor+N cols.Long cell content may be shortened with an ellipsis to keep the table within the available screen space.
2. Replace “Notion Block Support Details” with
Notion Block Support Details
The plugin fetches and displays most top-level Notion page blocks, including text, headings, lists, images, and tables.
Nested Content
table_rowchildren belonging to a supported top-level table block are fetched and displayed.Unsupported Types
table_of_contentssynced_blockbreadcrumbcolumn_listLinks
Numbered Lists
People Mentions
@anonymousdue to Notion API privacy restrictions.Emojis
3. Replace “Best Practices” with
Best Practices
!at the beginning of a line only when the entire cell should be highlighted.