Changelog
Latest updates and improvements to Notion UI.
🔎 Table search and filters
Find rows with text search and property filters in Table View.
What's new:
- Search: Search row content and combine search results with property filters.
- Advanced filters: Build nested AND/OR groups with property-specific operators and values. Filter rules are saved in the view state.
🖱️ Cell selection and plugin APIs
Select cells with the mouse or keyboard, with clearer boundaries between table data and cell presentation.
What's new:
- Cell selection: Drag to select a range, extend selections with Shift, and add or remove cells with Ctrl or Command.
- Keyboard interaction: Navigate cells, select all visible cells, and clear the selection with Escape.
- Separate data and UI plugins: Register matching data plugins and React UI adapters through
plugins.dataandplugins.ui.
Upgrade note: Custom plugins now use separate data and UI registrations. Review the updated Cell Plugin API when upgrading.
🗓️ Calendar views
Added a Calendar layout to Table View and a standalone Calendar block in @notion-kit/ui/calendar.
What's new:
- Month, Week, and Day: Display all-day and timed events with timezone-aware dates.
- Event editing: Create events, drag to move them, resize their duration, and move them between the all-day area and time grid.
- Table integration: Display rows using a Date property, open rows from events, and apply the table's search, filters, and sorting.
- Shared date navigation: Calendar and Timeline share date settings and preserve the viewed date when switching layouts within a mounted table.
Upgrade note: Table View's view.timeline settings are now view.dateView. Update persisted settings and controlled resources using the Timeline migration guide.
📜 Table and row edit logs
Added optional edit history for tables and individual rows.
What's new:
- History dialogs: Enable table and row history with
fetchTableEditLogsandfetchRowEditLogs, including manual pagination. - Historical values: Render values using stored property metadata, even after properties or options change or are removed.
- Custom history renderers: UI adapters can provide
renderReadOnlyValue, with plain-text fallback for unsupported values.
See the edit log documentation for callback and record formats.
🧮 A more capable Table View
Table View is now powered by TanStack Table v9 and includes bulk editing for selected rows.
What's new:
- Bulk Editing: Select multiple rows and update compatible properties together, including text, number, select, checkbox, and date fields.
- Extensible Editors: Custom plugins can opt into bulk editing by providing a cell editor, without special-case integration in Table View.
- Stronger Table Foundation:
@notion-kit/table-hook,@notion-kit/table-view, and Settings Panel tables have been migrated to TanStack Table v9 for more reliable sorting, grouping, row actions, and controlled state.
🗿 Base UI primitives
Notion Kit's UI primitives have been migrated to Base UI, improving their underlying accessibility and interaction behavior while preserving the familiar Notion Kit look and feel.
What's new:
- Expanded primitives: Added
Autocomplete,Combobox,Meter, andSortablealongside refreshed menu, select, dialog, tooltip, tabs, and form primitives. - New blocks: Added a Kanban block to
@notion-kit/ui. - Updated component APIs: Several primitives now use the Base UI composition model; review the updated component documentation when upgrading.
🕶️ Cool Blocks
Added @notion-kit/cool-blocks, a collection of expressive, interactive React blocks for playful product moments.
What's included:
- Eject: Animate content out of view, with disappear, respawn, and ghost modes.
- Falling Blocks: A physics-driven, draggable falling-blocks interaction.
- Sling Shot: A draggable slingshot-style interaction component.
🗺️ Transit map data and visualization
Expanded the map platform with Transitland-backed transit data, real-time vehicle updates, routes, stops, trip details, and a dedicated interactive globe application.
🚀 Single UI Package
We have consolidated all individual UI components into a single unified package: @notion-kit/ui.
What's new:
- Simplified Imports: Instead of importing from numerous small packages (e.g.,
@notion-kit/button,@notion-kit/dialog, etc.), all primitives and complex components likenavbar,sidebar, andtimelineare now exported directly from@notion-kit/ui. - Easier Maintenance: A single package structure drastically reduces dependency overhead and improves build performance.
- Unified Design System: Ensures a more consistent styling approach across all components using shared core styles.
🗺️ Map components
Added @notion-kit/map, a MapLibre-powered package for building interactive maps with Notion Kit styling.
What's new:
- Map Container: Theme-aware
Mapcomponent with custom styles, projections, loading state, and controlled viewport support. - Controls: Zoom, locate, compass, fullscreen, and 2D/3D view controls for common map interactions.
- Overlays: Markers, popups, routes, arcs, and clustered GeoJSON point layers for rich map experiences.
- Advanced Layers: Documentation and registry examples for custom MapLibre sources, layers, GeoJSON updates, interactions, and visibility toggles.