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.data and plugins.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 fetchTableEditLogs and fetchRowEditLogs, 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, and Sortable alongside 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 like navbar, sidebar, and timeline are 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 Map component 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.