-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
Your App component is doing far too much. The componentDidMount function is massive and much of that should be broken out into a separate function. Abstract your network layer into separate utilities so all of that code isn't just dumped in your React component.
I'd recommend ditching socket.io and using ws instead. socket.io is an unnecessarily opinionated wrapper for standard websockets that require you to use their client and server and have extreme browser support with fallbacks that you probably don't want anyone to use. Use native websockets and you'll have more control and can use it with any client/server you want and it'll be far faster for your users.