Streamlining Your ESHOPMAN Admin: Ensuring Consistent User Experience for Return and Refund Management

Enhancing Your ESHOPMAN Admin Experience: The Power of Consistent UI

At Move My Store, we understand that a seamless and intuitive administrative experience is crucial for managing your e-commerce operations effectively. ESHOPMAN, our headless commerce platform built on Node.js/TypeScript and deeply integrated with HubSpot for storefront management and CMS deployment, constantly evolves to provide the best tools for merchants and developers. A recent community discussion highlighted an important aspect of this commitment: ensuring consistency across the ESHOPMAN Admin Dashboard UI.

The discussion centered on a noticeable difference in how 'Return Reasons' and 'Refund Reasons' are managed within the ESHOPMAN Admin. While seemingly similar functions, their respective list pages presented a disparity in user experience, impacting efficiency and ease of use.

The Inconsistency: Return Reasons vs. Refund Reasons

Users observed that the 'Return Reasons' settings page lacked essential functionalities like search and column sorting, which are standard on the 'Refund Reasons' page. This inconsistency stemmed from the use of different underlying UI components:

  • Return Reasons: Utilized a legacy component, often referred to internally as _DataTable, which, when configured with noHeader: true, resulted in a simplified display without search bars, column headers, or sorting capabilities.
  • Refund Reasons: Benefited from a newer, more robust DataTable component, offering full search functionality, interactive column sorting, clear column headers, and appropriate empty state messages.

This difference meant that while managing refund reasons was straightforward and efficient, handling return reasons could be cumbersome, especially for stores with a large number of entries.

Technical Deep Dive: Understanding the Components

For ESHOPMAN developers, this insight is particularly valuable. The core of the issue lay in the component choices and how columns were defined:

  • For Return Reasons (legacy approach):
    packages/admin/dashboard/src/routes/return-reasons/return-reason-list/components/return-reason-list-table/return-reason-list-table.tsx — uses _DataTable from components/table/data-table
    packages/admin/dashboard/src/hooks/table/columns/use-return-reason-table-columns.tsx — uses createColumnHelper from @tanstack/react-table (without full sorting/headers)
  • For Refund Reasons (current, recommended approach):
    packages/admin/dashboard/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/refund-reason-list-table.tsx — uses DataTable from components/data-table
    packages/admin/dashboard/src/hooks/table/columns/use-refund-reason-table-columns.tsx — uses createDataTableColumnHelper from @eshopman/ui (with full sorting/headers)

The key takeaway here for developers is the importance of leveraging the standardized ESHOPMAN UI components and helper functions, like createDataTableColumnHelper from @eshopman/ui, to ensure a rich and consistent user experience across the admin dashboard.

The Solution: Standardizing for a Better Experience

The clear path forward, as identified by the community, is to migrate the 'Return Reasons' page to use the same modern DataTable component and createDataTableColumnHelper pattern already successfully implemented for 'Refund Reasons'. This standardization not only resolves the immediate UI inconsistency but also reinforces a best practice for ESHOPMAN development: utilizing robust, platform-native components for a cohesive and powerful admin interface.

This discussion underscores ESHOPMAN's commitment to continuous improvement, ensuring that every part of the platform, from the Admin API to the HubSpot CMS storefronts, delivers a top-tier experience for merchants and developers alike. Consistent UI/UX in the ESHOPMAN Admin means more efficient store management, better data accessibility, and a more intuitive environment for everyone leveraging the power of our headless commerce solution.

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools