Show HN: GolemUI – The new paradigm for JavaScript forms

golemui.com

26 points by wtfdeveloper 3 hours ago

We're a team of three friends who have been working with forms and Open Source for a decade, and we joined forces together to create something where we can apply all of our experience.

We recently released GolemUI, an Open Source library to generate forms dynamically from JSON definitions, with a typed layer to simplify authoring.

This library has a lot to offer. These are the main characteristics:

1. A JSON engine. The form is governed by a JSON definition that you can store in a DB, version, diff, or generate it with LLMs as a validated JSON.

2. We provide also 28 headless components (and growing) that you can style with CSS variables. We offer APIs so you can drop in Material, Shoelace, or your own components.

3. A DX typed authoring layer on top to write forms programmatically, that generates JSON. So you don't have to write it.

4. The same definition can render the UI components in React, Angular, Vue, Lit, or Vanilla JS.

5. We also have a deterministic MCP that has tools for to validate the model's output, generate JSONs or code, and ensure that the definition returned by the LLM is always valid.

You can find more information here:

Happy to hear any feedback from you and answer any questions!

charucharu 5 minutes ago

How do you handle schema migrations? If someone has thousands of JSON form definitions stored in a database and the component API changes, is there a migration strategy or versioning system built in?

mring33621 10 minutes ago

Lots of my previous employers had "data structures to forms" tech. It's very useful.

GolemUI looks like a nice open source version of this idea.

Thank you!

  • wtfdeveloper 8 minutes ago

    THANK YOU!

    Being three devs here on a table reading comments and feeling nervous, is great to hear this kind of feedback, we really did pour our souls here.

todotask2 24 minutes ago

Why did your release jump from 0.17.0 (2026-06-08) to 1.0 in such a short time?

If I use Tailwind, BEN or Boostrap, how hard it will be to customise? Flowbite have a few pre-made UI.

Shoelace UI is based on Web Components, now that it got bigger:

https://webawesome.com/docs/components/

recursive 42 minutes ago

All the field relationships seem to be expressed in strings. This suggests that you might not be able to use auto-complete or build-time syntax or type checking on them. I like the general idea, but that would be a big downside if I'm understanding correctly.

  • wtfdeveloper 33 minutes ago

    You are correct, the reactive expressions are not statically checked at the moment, but we have an item in our roadmap to fix that. On the other hand, the runtime expressions evaluator does provide feedback in the form of error messages, so it doesn't fail silently.

  • seattle_spring 36 minutes ago

    If done properly, autocomplete w/ Typescript and string literals should work just fine.

    • recursive 32 minutes ago

      In that case, it seems that the live demos in stackblitz have not been done properly.

nilirl 30 minutes ago

Ok, I love it.

Can you simplify how form dynamism works? I skimmed the docs and saw 'states', but it didn't immediately click how it works.

Do we build a tree of rules outside of the components? Are states attached to each component, bottoms-up, and then the form tree is managed by the library?

  • wtfdeveloper 20 minutes ago

    Depending on the DSL you choose (JSON or Programmatic) you declare reactivity slightly different, but pretty much, we have states and inlined expressions.

    If states didn't click initially that's fine, you can still cover a lot of ground using inlined expressions: https://golemui.com/dx/features/states/inline-when/

    Basically you can nest the states, so you can build a tree of states that way.

    Or you can leverage the DX to have fully reactive components.

verdverm 2 hours ago

How is this a new paradigm?

This idea for JSON -> form has existed for a decade, one example: https://github.com/eclipsesource/jsonforms

  • wtfdeveloper 2 hours ago

    Correct,

    But there is more, paraphrasing the post itself:

    This library has a lot to offer. These are the main characteristics:

    1. A JSON engine. The form is governed by a JSON definition that you can store in a DB, version, diff, or generate it with LLMs as a validated JSON.

    2. We provide also 28 headless components (and growing) that you can style with CSS variables. We offer APIs so you can drop in Material, Shoelace, or your own components.

    3. A DX typed authoring layer on top to write forms programmatically, that generates JSON. So you don't have to write it.

    4. The same definition can render the UI components in React, Angular, Vue, Lit, or Vanilla JS.

    5. We also have a deterministic MCP that has tools for to validate the model's output, generate JSONs or code, and ensure that the definition returned by the LLM is always valid.

    So we see ourselves as the one shop stop for all your form needs.

    • tiborsaas 2 hours ago

      This is a good batteries included form framework spec, but not a new paradigm. A new paradigm would be something like not filling forms at all and just process user input via an LLM. Or using voice input in a controlled way. Maybe an adaptive single input field that always knows what you need type.

      • wtfdeveloper an hour ago

        We respect that, we believe is groundbreaking, but also we are aware that as with any other slogan couyld be highly speculative.

        However, I think if you look at our offering, perhaps you will agree that there is no one out there that positions themselves as the one stop shop for forms.

        • prawnsalad an hour ago

          "new paradigm", "ground breaking". Yet I remember using JSON backed forms in back around 2010 and there's lots of them since. You've added a few handy UI features on top but it's hardly anything new. You're just ruining the useful features you do have with the overstated nonsense

    • skrebbel 34 minutes ago

      That's not what "paradigm" means.

pavlov 2 hours ago

The overuse of blue and purple gradient fills on the landing page is a telltale sign of AI slop.

I’m sorry, maybe it’s shallow, but that makes me close the tab.

  • criticalfault an hour ago

    i have the same sentiment.

    upon opening the site, I immediately got vibed feeling so I closed the tab.

  • wtfdeveloper 2 hours ago

    haha! Fair point! We are three old school programmers and have no idea on design, so yes for the website ONLY, we let Claude designed for us...

    If any designers come over to the comment section, we would love to hear from you! We'd love to improve our website with your advice.

    On the other hand, the code, we started coding this more than one year ago and we have poured our souls on it.

    If you can bare the AI obvious styling front page, I think you would like the framework

    • cadamsdotcom an hour ago

      My main advice would be to get rid of anything extraneous in the site.

      Animations should serve a purpose - for example, gamifying with a fireworks animation is useful if you think that communicates what you want about the product.

      Engineers know that rainbow borders on boxes are tricksy to implement but a cinch for agents. So rainbow borders are a loud way to say “we didn’t pay close attention to what we were building when we built this” - or to be a bit more kind, “we shipped our first draft”.

      It’s just like reading code. Why would you want any distractions?

      • wtfdeveloper an hour ago

        THANKS!

        Well, we are very experienced developers, which is code for.. we are old... Old as from the time where websites had banners moving across the page, so that might have influenced our choices.

        But these suggestions are gold to us as we have no expertise on design, so thanks AGAIN

        • cadamsdotcom 38 minutes ago

          You’re welcome! Happy that it was helpful and not tooooo unkind..

          Design can tickle different bits of your brain compared to code! Quite often I can’t pin down and name just what’s wrong (those with the vocab can, of course)

          But if you can describe the feeling in the back of your mind to an agent you’re golden.

    • conartist6 an hour ago

      the feedback is actionable. Fix the styling. It looks awful, like it was made by a middle school student or something

  • manojlds 44 minutes ago

    Don't judge a book by its cover. In this case, a library by its website.

    • wtfdeveloper 32 minutes ago

      Thanks! We are definitely learning from this post about things to do, is by far not our strong side

    • hungryhobbit 31 minutes ago

      You should absolutely do that! If a library can't even be arsed to present itself in a reasonable way, how can you possibly trust it to do real work well?

      And to be clear, I have a public website created (and designed) by Claude. But the key difference is that I used my brain, and iterated with Claude to make the style not look like AI slop.

      Like anything with AI, you can't just fire off a prompt and expect a good anything (code, design, whatever). You have to put effort in ... and all signs show the people behind this library aren't.

nu11ptr 2 hours ago

As someone just starting out with the JS ecosystem, how does this compare to something like SurveyJs?

  • wtfdeveloper an hour ago

    Honest caveat, none of us have really used SurveyJS, so correct me if I'm off. Biggest overlap is the JSON-schema idea, which is our first point here:

    1. A JSON engine. The form is governed by a JSON definition that you can store in a DB, version, diff, or generate it with LLMs as a validated JSON.

    2. We provide also 28 headless components (and growing) that you can style with CSS variables. We offer APIs so you can drop in Material, Shoelace, or your own components.

    3. A DX typed authoring layer on top to write forms programmatically, that generates JSON. So you don't have to write it.

    4. The same definition can render the UI components in React, Angular, Vue, Lit, or Vanilla JS.

    5. We also have a deterministic MCP that has tools for to validate the model's output, generate JSONs or code, and ensure that the definition returned by the LLM is always valid.

    But you can see that we do way more...

    • hungryhobbit 21 minutes ago

      If you don't even know what tools exist in the ecosystem, how can you possibly know that your tool even scratches a new itch ... let alone "creates a new paradigm"?

manojlds 43 minutes ago

Why the name Golem?

  • wtfdeveloper 38 minutes ago

    Golems are mythological creatures that are brought to life with clay.

    For us, our library is the clay, and the result of what you code with it is the golem.

cmoski an hour ago

Date range picker doesn't work...

  • wtfdeveloper an hour ago

    You would be suprised to hear this, but we are actually thrilled to hear this! We are on our first weeks (v1.02), so if you have found a bug we would love to get our hands on it!

    Would you consider raising an issue here? https://github.com/golemui/golemui/issues

    You could be the first person to open an issue on this repo (other that the three of us)

    It goes without saying that this does work in our machines.

typeofhuman 2 hours ago

Is there no file input type?

  • wtfdeveloper 2 hours ago

    Good feedback! Is actually on the roadmap :)

hungryhobbit 33 minutes ago

I knew this would be yet another garbage copycat library the moment I saw "new paradigm" in the title. When I actually looked at the webpage, I found I was not at all wrong.

P.S. I genuinely don't want to hate on the work of motivated devs, creating something useful for the community, and trying to share it. That's a great thing, and we want more of it!

But when some asshat comes in with an ai slop library that's redundant with a dozen other solutions (all of which people actually use in production to solve problems) ... and claims that they are creating new paradigms ... it feels to me like that makes things harder for every real new contribution.

All the stuff we want is signal, and crap like this just adds ego-based noise that blocks the signal.