Products · Product
D3.js
Raised as a usability problem by 44 people on Hacker News over 15 years (2011–2025), in 29 threads.
No issue was raised by at least 3 people in 3 threads this year.
No issue was raised by at least 3 people in 3 threads in the last 5 years.
Every issue, all time, most people first
Examples and docs are fragmented, leaving newcomers strugglingUnreviewed
20112026- Newcomers struggle to learn D3 as examples and docs are fragmented and assume Observable notebooks2025-04-11
- D3 examples are embedded in Observable notebooks, making d3 itself harder to learn2025-04-08
- Docs and examples are so Observable-ified that users can't untangle d3 from Observable2025-04-08
Poor naming makes the API hard to rememberUnreviewed
20112026- API is confusing and hard to follow for concepts that aren't inherently confusing2021-03-30
- API is counter-intuitive to use2018-06-13
- Poor naming makes it easy to forget how the API works2016-07-19
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 48 complaints
- Hard to learn; steep learning curve for new users2025-08-22
- Newcomers struggle to learn D3 as examples and docs are fragmented and assume Observable notebooks2025-04-11
- D3 examples are embedded in Observable notebooks, making d3 itself harder to learn2025-04-08
- Docs and examples are so Observable-ified that users can't untangle d3 from Observable2025-04-08
- Docs confuse returning users; they can't recall how to use D3 again2024-05-16
- Library is unintuitive, easy to get wrong, and hard to debug2024-05-16
- Data join requires a non-intuitive chained call sequence, which people find confusing2024-05-16
- Hard to figure out how to use d3 axis as a standalone SVG generator2023-06-23
- Steep learning curve makes D3 hard to pick up compared to matplotlib2021-07-19
- API has rough edges like select vs selectAll and merge(enter) pattern2021-06-13
- Beginner spends hours frustrated, unable to figure out the examples2021-06-13
- Hard for beginners to get into D3 over the years2021-06-12
- Enter/exit selection pattern is cumbersome and unnecessary to use2021-06-12
- Gives almost no errors, or misleading ones, for bad inputs2021-03-30
- API is confusing and hard to follow for concepts that aren't inherently confusing2021-03-30
- Hard to tell which API parts are imperative versus declarative2021-03-30
- Implicit, ultra-declarative style feels like a constant fight to the author2021-02-25
- Documentation and examples links lead to Observable pages, making it hard to learn D3 alone2020-08-27
- Hard to get started with D3 without the Observable playground2020-08-27
- Chart updates via React state are slow, and manual DOM manipulation gets out of sync with React2020-03-26
- Using D3 is overwhelming in complexity for someone new to it2020-03-25
- Imperative interface is really hard to use with modern stacks2020-03-25
- Building a plain line chart needs lots of extra code2019-09-05
- Making charts requires knowing SVG internals and reshaping data into formats D3 accepts2019-09-05
- Hard to configure even for basic and simple visualizations2018-06-13
- API is counter-intuitive to use2018-06-13
- Misplacing .merge silently breaks everything with no warning or error2018-06-12
- Overly complex and hard to learn; hours spent searching for how to do things2018-06-12
- Takes very long to build simple charts; hard to find built-in features and abstractions are confusing2018-06-12
- Only figured out left-click on graph icons, suggesting hidden interactions2018-03-18
- Docs are jargony and the learning curve is steep to make anything2017-05-10
- Its method of binding to the DOM is hard for people to understand2016-12-06
- Poor naming makes it easy to forget how the API works2016-07-19
- Syntax is obtuse, with confusing chained API and procedural code2016-07-18
- Large graph takes about a minute to stabilize and looks wobbly and janky2016-07-11
- Hard to start building anything; feels counterintuitive to work with2016-05-27
- Confusing at the start, especially the data join and method chaining2015-12-06
- Found the charting library very confusing to use2015-12-06
- Poor UX so bad it discourages even a motivated learner from clicking play2015-10-26
- Force layout renders too slowly on modest computers with 500 nodes2015-07-10
- SelectAll has too many responsibilities, making it opaque and hard for newcomers to learn2015-05-15
- Steep learning curve; method behavior unclear and API feels cryptic to beginners2014-11-14
- Hard to use and counterintuitive, so few people get its full potential2014-05-15
- Official docs are hard to dive into and get help from2013-10-01
- Click handler and cursor style appear later than they should, confusing to follow2013-10-01
- Can't tell in which order to visit the presentation pages2013-02-04
- Globe keeps rotating with the mouse after release, blocking the play button2012-10-24
- Back button breaks navigation, so going back does not work as expected2011-08-12