Inspiration

Confluence tables are the core of planning and documentation, but as needs increase, they become strained:

  • Teams want intuitive inline editing instead of complex modal dialogs
  • PMs require structure, such as column types and validation, not just individual cells
  • Contributors seek speed with keyboard workflows, bulk editing, and seamless copy/paste
  • Everyone desires consistency: stable formatting and well-maintained data

Better Table was forged to give your Confluence space the same usability as native tables, but with enhanced editing and formatting features.

What it does

Better Table is a Confluence macro that upgrades native tables with:

  • Inline editing that feels instant, with keyboard-first workflows
  • Resizing columns with persisted state
  • Edit/Publish views
  • Column types (text, number, date, select, tags) with validation (in alpha only text)
  • Smart formatting (quick styles, alignment, auto-fit, sticky header) - not available in alpha
  • Bulk actions (multi-select rows/columns, clear, move, duplicate) - not available in alpha
  • Data operations (copy/paste, CSV import, simple export) - not available in alpha
  • Templates (starter structures: Roadmap, Backlog, Inventory, Decision Log) - not available in alpha
  • Accessibility and performance improvements for large datasets

It looks and behaves like a "native" table - just faster, more intelligent (I hope), and more resilient.

How we built it

  • Platform: Atlassian Forge (UI Kit + Custom UI), designed to run natively inside Confluence
  • UI: UI Kit components provides bridge to Custom UI
  • Custom UI: use Atlassian Design System
  • Data: Forge Key-Value Store API for table state
  • API calls: prefer asUser() where user-context is required; minimized scopes for security
  • Frontend: view.getContext() via @forge/bridge for simple product calls from the UI
  • Backend: lightweight resolvers for storage persistence and permission-checked operations
  • Performance: careful re-render control and efficient state diffs for large tables
  • Packaging: icons and assets served via declared resources to ensure predictable bundling (Vite)

Challenges we ran into

  • UI Kit constraints: there's no "Table" component - DynamicTable + InlineEdit wasn't ready for my needs. So I rebuilt the table with performance and accessibility in mind
  • Asset packaging: Confluence macro icons must be a path relative to a declared resource (or an absolute URL). Caching and packaging nuances made this trickier than expected
  • Data modeling: balancing freeform editing with typed columns and validation, without bloating storage writes or hurting responsiveness (already found what to improve)
  • Keyboard flows: supporting intuitive cell navigation, selection, and batch edits within UI Kit's event model
  • Confluence context: ensuring the macro behaves predictably across pages, versions, and editing contexts

Accomplishments that we're proud of

  • Native-feeling inline edit experience that "just works" for everyday users
  • Structured columns
  • Performance that supports larger tables with smooth editing
  • Minimal permissions and a secure storage strategy aligned with Forge best practices
  • An architecture that is maintainable and comfortably fits within Forge's constraints

What we learned

  • In Forge, "simple" wins: data and UI decisions that align with the platform's core principles reduce surprises
  • Macro icons must be served from declared resources
  • Validate early: test UI Kit behavior and data structures in small, end-to-end segments before finalizing patterns
  • Use unit tests and Storybook to streamline development and speed up delivery
  • Be explicit with scopes and context: prefer asUser() for user-backed actions and maintain strict permissions

What's next for Better Table

  • Advanced column types and behaviors
    • Formulas (basic computed fields)
    • Conditional formatting
    • Rich select/multi-select with color tags
  • Data import/export
    • CSV/JSON/XLSX import/export with type-aware mapping
    • Templates gallery with one-click apply and override
  • Collaboration & guardrails
    • Soft locks/conflict awareness
    • Row-level operations with undo/redo
  • Automations and integrations
    • Jira issue sync: create/edit issues from rows, link statuses
    • Confluence actions: turn a row into a page
  • Usability and polish
    • Keyboard shortcuts quick reference
    • Localization and improved accessibility
    • Mobile-friendly editing state

Built With

Share this project:

Updates

posted an update

Drag and drop in both directions is now live in Better Table for Confluence

One of the most requested features in Better Table for Confluence has just shipped: drag and drop in both directions.

If your team works with large tables in Confluence, you know how painful it is to reorganize rows and columns manually. This feature exactly solves that.

Some stats:

  • 2 implementation attempts before getting the architecture right
  • 1 prototype project to validate the approach
  • 54 commits
  • 22 files changed
  • 3,000 lines of code touched (rewrites included)

Here comes a demo of the changes: https://youtu.be/MXnKVVvnras

The dnd implementation supports both axes (columns and rows) and was rebuilt from scratch to handle them correctly at the architectural level. The first attempt failed because drag and drop in both directions is genuinely complex - it is not something you bolt on top of an existing table. The second attempt started with a clean slate and the right foundation.

I also reviewed native Confluence tables and several competing Marketplace apps before making key UX decisions. We are eager to see how the community responds after the release.

The feature was developed in close collaboration with Claude Code and Rovo Dev CLI. The Atlassian ecosystem has a specific tech stack that AI tools do not always support out of the box. So the approach was to prototype a simpler React + Tailwind CSS implementation first, validate the logic, and then migrate to the Better Table stack. It worked well.

If Confluence is your second home, stay tuned. Release is coming (fingers crossed).

Log in or sign up for Devpost to join the conversation.