← Coinbase Interview Insights

Coinbase·Frontend Engineer·Take-home Assignment·Intermediate

Intermediate
May 2026

Summary

Take-home assignment for a frontend role at Coinbase. Build a list component with empty state, a clean prop API, and enough styling to not look embarrassing. Pretty scoped exercise but there are a few details that can trip you up if you're not thinking about extensibility.

Questions Asked (1)

Q1

Build a reusable list UI component that renders an array of items, handles an empty state, exposes a clean prop API with optional callbacks, and is structured to support future API-driven data and reordering.

Technical Trade-offsSystem DesignAPI & Integrations
Author's notes

The empty state tripped me up more than I expected.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline a component API that separates data, presentation, and behavior. Walk through the implementation focusing on reusability, empty state, and extensibility for future API-driven data and reordering. Discuss trade-offs and how you would test and document the component.

Pro tip: Emphasize that the component should be controlled and stateless where possible, delegating data fetching and reordering logic to parent components or hooks. This demonstrates separation of concerns and makes the component easier to test and reuse.

1. Clarify requirements and constraints

Ask about expected item shape, performance needs (e.g., virtualization), and whether reordering should be immediate or persisted. Confirm if the component should handle loading and error states in addition to empty state.

2. Design the prop API

Define props like items, renderItem, keyExtractor, onItemClick, onReorder, emptyStateComponent, and loading/error props. Keep the API minimal but extensible, using render props or component injection for customization.

3. Implement the component structure

Create a functional component that conditionally renders the empty state, loading state, or the list. Use a flat list for performance and wrap it in a container that can later integrate drag-and-drop libraries.

4. Support future API-driven data and reordering

Abstract data fetching into a custom hook or parent component, and design the list to accept an onReorder callback that can be wired to an API. Use a state management pattern that allows optimistic updates.

5. Discuss trade-offs and testing

Talk about controlled vs uncontrolled components, performance implications of re-renders, and how you would test empty state, callbacks, and reordering. Mention accessibility considerations.

Key Points to Mention

  • Separation of concerns: presentational component vs data fetching logic
  • Prop API design: items, renderItem, keyExtractor, onItemClick, onReorder, emptyStateComponent
  • Empty state handling with customizable component
  • Extensibility for API-driven data: loading/error states, pagination, and optimistic updates
  • Reordering support: integration with libraries like react-beautiful-dnd or react-dnd, and callback design
  • Performance considerations: virtualization, memoization, and avoiding unnecessary re-renders

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.