We asked React Flow users about the library and the ecosystem of docs, support, and subscriptions around it to better understand our users' needs, and help guide the core team as we continue improving the library.
Here's what we found ✌️
The survey was focused on five important questions:
The survey was at most 19 questions long, took an average of 8:44 minutes, and had an 42.2% completion rate.
We had 83 complete responses.
Respondents were using React Flow in companies big and small, and from an even spread of how long they've been using React Flow. 21% of respondents have at some point been subscribed to React Flow Pro.
What is your role or area of expertise?
We let folks select multiple options for this one, but we might have fumbled a bit by including a "full-stack" option when selecting both "frontend" and "backend" would have been made more sense.
A total of eight respondents didn't choose one of "full-stack" or "frontend". it's hard to imagine someone unfamiliar with frontend getting stuck into a library like React Flow, talk about jumping in at the deep end!
Where are you using React Flow?
As before, folks could choose multiple options if they were using React Flow in different contexts.
The vast majority of respondents are using React Flow at work, but we were surprised to see how many people were using React Flow at work and on personal projects. A quarter of respondents using React Flow on personal projects were also using it at work!
How long have you been using React Flow?
So many newcomers, welcome to React Flow!
We've been developing the library and also engaging with the community for so long now that it's easy to lose sight of what the experience is like for someone who's just getting started.
We made moves last year to improve the onboarding experience for new folks, including revamping our quickstart guide, expanding our API reference, and providing new.reactflow.dev so folks can get started without having to install anything. We'll be looking for ways to improve this experience even more in 2024.
Our docs are the most common place for people to go for help.thank goodness
More curiously though:
26% of people said they go to ChatGPT but only 6% would ask a friend or coworker.
The API reference is the most-used section of our docs.
When you are having trouble with React Flow,where do you go to get help?
Eight people did not select docs.
We think most of the survey's respondents came from our Discord community, and that might have skewed the number of folks mentioning Discord.
On the other hand, we found it difficult to surface the survey to our users that primarily interact with us through GitHub issues. All six of the "Other" responses mentioned GitHub, and we suspect that number would be higher if we had more participants coming from GitHub.
We were really surprised, a little disheartened, and slightly concerned that ChatGPT was so popular. We're proud of the breadth and depth of our documentation that we provide for free, and think it's one of the main things that sets us apart from similar libraries. We don't have any official integrations with any LLMs so it's a bit of a bummer to know folks are turning to them instead of our docs for help.
Which section of the docs do you use most often?
When looking at the data for this question, we considered how much experience someone had with the library. We found that folks newer to React Flow spend most of their time in the learnsection of our docs: these are long-form guides. On the other hand, our most experienced users spent most of their time in the API reference.
This insight might be useful to other open source maintainers who want to know where to focus their documentation efforts.
So we have an idea of where folks are going to get help, but what exactly are they looking to get help with?
We asked some open-ended questions about what things our users found most difficult about using React Flow or what features and functionality they felt was missing from the library. Then, we went through the responses and grouped them into categories or themes.
Here are the most common categories:
Getting performance right in a big React app is a hard problem, and many of our users have definitely felt that pain. We noticed recurring pain points around state management: particularly related to custom nodes and node data.
“our use case became much more unique so we needed to explore new territory, specifically with rolling our own state management...I‘m still sitting here wondering if we are doing it "right" in terms of optimizing the performance of React Flow.“
“Passing info from one node to another, and getting connected nodes‘ info in a large graph without slowing down the app“
Here's what we're planning to do about it:
Jump to another category:
Our users felt state management was difficult to get right in React Flow. There's a lot of confusion around what state is managed by React Flow versus what state should be managed by the user, and then there are questions about what library or approach to use for state management!
“The documentation has some holes in it, so I‘ve run into some dead ends trying to figure out how particular areas of state management should work.“
“Maybe a complete example with state management and/or more docs on the library implementation“
“State is difficult, but that‘s probably just because state is hard in general“
“Managing state and changes for my custom nodes.“
Here's what we're planning to do about it:
Jump to another category:
Smarter and more powerful edges has been a recurring request from our users for literally years! There's scope for the library to improve but we're also weary about making the library harder to maintain: some of the features folks want end up being quite complex!
“More animations for edges.“
“Implementing smart edges for sure🥹, haven‘t been able to figure out yet, also would love if you guys could add some examples of edges routing in your documentation.“
“I wish React Flow has something like edge routing, to avoid edge intersections.“
Here's what we're planning to do about it:
Jump to another category:
Around 50% of respondents mentioned they had implemented some sort of node layouting in their flows.
We have no plans on adding layouting directly to the library – there are other packages out there that solve that problem much better than we could – but it is clear that this is something many of our users need and perhaps we could do a better job at pointing folks in the right direction.
“Auto layout helpers not based on other third party libraries. Better way to trigger layout changes and recalculation.“
“...It‘s also hard to do auto layout on data change like getting new nodes from the database... it wasn‘t as straightforward as I hoped for.“
“Auto layout options and doing the custom math for my layout. Learning to think the way a layout engine wants“
Here's what we're planning to do about it:
Jump to another category:
We also had some responses that didn't fit into any of these categories...
Understanding the internals
“I find myself constantly printing out the values of edges, nodes and how they change. Maybe a small tool that displays the details of the current element on click (only enabled in dev mode.)“
“The innerworkings of the edge APIs, the tricks with nodeinternals to get edges to choose the nearest side of a node. It‘s great that it‘s possible, but also those APIs are pretty confusing.“
“Accessing the internal states are sometimes not working as expected. e.g. getNodes might not return the latest data. We ended up using some work-arounds. I guess this is more of a React problem.“
“Something like a hashtable to query data from node / edge without searching the whole array“
Custom nodes
“No good examples to understand the complex node design.“
“I feel there‘s a general lack of information about doing anything other than basic stuff with Custom Nodes.“
Interactivity and UX
“I think the API should facilitate the interaction between nodes. e.g. add custom props for custom nodes.“
“Yes, the nodes data object to be passable to next connected node data more easily“
“some UX tips/pages/sections to create a functional flow ui could be cool (there is community showcase to find inspiration, but some tips or deep explanation on how to design the node/edge for some use case, like a node, form inside a node or in a detail component, etc...)“
“Built in UX / comprehensive examples for "making a node editor" would be great.“
React Flow Pro is how we sustain ourselves as a business and can afford to work on React Flow while keeping it open source. It's important to us - and maybe other open source maintainers too - to understand why people are (or aren't) willing to pay for our Pro subscription.
We asked about it, and got responses from 19 Pro subscribers.
Everyone who responded to the survey knew what React Flow Pro was! We've never put money into advertising or promotion, and now we know we don't need to start now! 💅🏻
Main reason that someone subscribed to React Flow Pro was to access to Pro Examples. This is consistent with a previous survey we did, and it's good to hear: we put a lot of effort into making those examples valuable!
Most of those who subscribed said that they found the pricing fair. Some found it expensive, some didn't know how much their organization was paying. None found the price to be too low. 👁️👁️
One reason why folks might think the pricing is too high is that we currently don't offer region-based pricing. Our subscription is affordable to businesses in Europe or the US, but if you're in India or Brazil, it's significantly more expensive.
For the folks that didn't subscribe to React Flow Pro, the most common reason was its price. We cater our Pro subscription around businesses because those are the folks with the money available to keep React Flow sustainable, but that can mean our pricing feels unfair to individuals or small teams.
We offer discounts for early stage startups, and students and open source projects can access Pro Examples on request.
Some people were unhappy about the subscription model and would prefer a one-time payment. Our Pro platform is constantly improving and we are regularly adding new examples! The Pro subscription is what allows us to keep working on React Flow as a job and keep the library MIT licensed: having that recurring revenue makes all that possible.
Thank you to everyone who took the time to fill out our survey! We really appreciate your feedback and we're excited to use it to make React Flow even better.
If you'd like to read things in more detail, you can check out the full survey over on our blog.
Catch you next time! ✌️ The xyflow team
Keep up the good work
It‘s a great library!
I like a lot your product, I‘d like to work a lot on it
Great project! Very grateful it exists! Thank you for your work.
You are doing an excellent job with this. I am very happy with reactflow and would love to see you push it further. The examples are great, because they make it very easy to adopt features.
You guys are awesome
I have great respect for the reactflow team, making a great asset for the public under MIT license.
Great product, can‘t wait to see the future of it.
I really appreciate the work you‘ve put into this awesome library, it‘s enabling me to do so much more than I‘d otherwise be able to do.
Good job! Really like the lib. Fits my indie-project even though I might spent to much on this part (might be hard for me as a backend-developer)
Thanks for the incredible helpful open source project
Keep up the good working. Looking forward to getting actual feature updates again when v12 and svelte is out
I‘m a big fan of reactflow!
i really like the styling of the react flow page and the docs related to components are very helpful
it‘s very easy I love you developers