Show HN: Onlook – Open-source, visual-first Cursor for designers

220 points by hoakiet98 3 days ago | 82 comments
Hey HN, I’m Kiet – one half of the two-person team building Onlook (https://beta.onlook.com/), an open-source [https://github.com/onlook-dev/onlook/] visual editor that lets you edit and create React apps live on an infinite canvas.

We launched Onlook [1][2] as a local-first Electron app almost a year ago. Since then, “prompt-to-build” tools have blown up, but none let you design and iterate visually. We fixed that by taking a visual-first, AI-powered approach where you can prompt, style, and directly manipulate elements in your app like in a design tool.

Two months ago, we decided to move away from Electron and rewrite everything for the browser. We wanted to remove the friction of downloading hundreds of MBs and setting up a development environment just to use the app. I wrote more here [3] about how we did it, but here are some learnings from the whole migration:

1. While most of the React UI code can be reused, mapping from Electron’s SPA experience to a Next.js app with routes is non-trivial on the state management side.

2. We were storing most of the data locally as large JSON objects. Moving that to a remote database required major refactoring into tables and more loading states. We didn’t have to think as hard about querying and load time before.

3. Iframes in the browser enforce many more restrictions than Electron webview. Working around this required us to inject code directly into the user project in order to do cross-iframe communication.

4. Keeping API keys secure is much easier on a web application than an Electron app. In Electron, every key we leave on the client can be statically accessed. Hence, we had to proxy any SDK we used that required an API key into a server call. In the web app, we can just keep the keys on the server.

5. Pushing a release bundle in Electron can take 1+ hours. And some users may never update. If we had a bug in the autoupdater itself, certain users could be “stranded” in an old version forever, and we’d have to email them to update. Though this is still better than mobile apps that go through an app store, it’s still very poor DX.

How does Onlook for web work?

We start by connecting to a remote “sandbox” [4]. The visual editing component happens through an iframe. We map the HTML element in the iframe to the location in code. Then, when an edit is made, we simulate the change on the iframe and edit the code at the same time. This way, visual changes always feel instant.

While we’re still ironing out the experience, you can already: - Select elements and prompt changes

- Update TailwindCSS classes via the styling UI

- Draw in new divs and elements

- Preview on multiple screen sizes

- Edit your code through an in-browser IDE

We want to make it trivial for anyone to create, style, and edit codebases. We’re still porting over functionalities from the desktop app — layers, fonts, hosting, git, etc. Once that is done, we plan on adding support for back-end functionalities such as auth, database, and API calls.

Special thank you to the 70+ contributors who have helped create the Onlook experience! I think there’s still a lot to be solved for in the design and dev workflow, and I think the tech is almost there.

You can clone the project and run it from our repo (linked to this post) or try it out at https://beta.onlook.com where we’re letting people try it out for free.

I’d love to hear what you think and where we should take it next :)

[1] https://news.ycombinator.com/item?id=41390449

[2] https://news.ycombinator.com/item?id=40904862

[3] https://docs.onlook.com/docs/developer/electron-to-web-migra...

[4] Currently, the sandbox is through CodeSandbox, but we plan to add support for connecting to a locally running server as well

  • itsNintu 3 days ago
    This is awesome!

    I’ve tried other visual AI dev tools like Bolt or Lovable, but I feel like the walled-garden approach they’ve taken is a bit limiting in terms of how I personally want to work. As someone who comes from design but is actively using Cursor and Windsurf, I’ve very much been missing that Webflow-like ability to just click, edit, and see things getting updated in real-time, while always knowing I can drop into the code for more complex stuff.

    It looks like you’ve nailed this intersection. The fact that you’re taking what is basically a visual layer on top of the code, plus the inclusion of the in-browser code editor (and I assume terminal access for the sandbox eventually?), is a huge step in the right direction and feels like it could really cover some of that gap I want between design and dev.

    I’m definitely keeping an eye on this, and when you’re able to allow import existing projects I'll be onboard.

    Congrats on the launch!

    • D_R_Farrell 3 days ago
      Thanks so much!

      It's been a challenge to find the right balance for this – on one hand you want to give people who know what code is an easy way to navigate their codebases and be more effective, and on the other hand you want to help people who have never coded before create something they really love.

      The visual layer has a lot of polish left to do to be a perfect design tool experience, but we're getting there.

      I think for most designers they don't love being limited by traditional web "structures" like flexbox, but that's also how things can get built and scale properly. AI is very good at generating flexbox styled websites but when a designer jumps-in to an AI generated website it's like picking up a complex project someone else has architected. If you know how websites work it isn't super intimidating, but if you don't then it can feel very overwhelming.

      One of the main reasons we decided to not have layers and styles immediately visible on the left and right sides of the app was because people who have never jumped into a design tool mentioned they were overwhelmed with the UI. Moving these tools into a "secondary" interaction layer cleared up the interface but made it easy for pro-users to still find them.

      I'm excited to keep refining this editor experience so when you're able to import projects you have all of the tools you'd expect from a visual editor for your codebase.

      • hoakiet98 3 days ago
        Thanks for the kind words! We definitely want to restore the ability to use Cursor/Windsurf through SSH as soon as possible.

        There is terminal access on the right of the bottom bar. It just has 1 CLI connection right now, along with the long runner server but you can run commands through there or through the AI.

        Just merged a PR for that should be live in a few mins https://github.com/onlook-dev/onlook/pull/1963

      • satvikpendem 3 days ago
        Doesn't seem to be working for me, I see the loading spinner on the right arrow button briefly then it reverts to the arrow and does nothing.
        • D_R_Farrell 3 days ago
          I think there are some issues with the apply model – Kiet's working on a solution for it.

          In the meantime, can you try asking Onlook again? I know it's inconveniant.

          If nothing loads on the page, try clicking the text on the page, then prompting from the chat asking it to create a part or section of the website or thing you've prompted. Sometimes there's just a ton of code that gets rendered and doesn't apply, so shortening the length of the output manually with a smaller prompt may help.

          Something we definitely need to fix though

          • satvikpendem 3 days ago
            Same thing, I'm on https://beta.onlook.com/, not sure if I need to be prompting elsewhere, but anything I enter into the text box, it doesn't actually seem to do anything, I don't see any code or designs, the page remains the same.
        • D_R_Farrell 3 days ago
          The limit was just raised – Go ahead and try it again and let me know if it works!
          • mdaniel 2 days ago
            Just as a "for your consideration," how would anyone have known without you weighing in on a HN thread?

            I don't know what it is about frontend apps that makes them assume that every request is 200 OK or that every Promise is always .then(response) but as a consumer of the web it drives me batshit, and as a developer of enterprise apps it makes me the bad guy in PRs

            Anyway, I'm not exactly wagging my finger at you but rather if this thing you are shipping is designed to help generate apps for people, it would be stellar if the generation included at bare minimum a // TODO watch out for errors

      • D_R_Farrell 3 days ago
        Hey HN! I'm Daniel, the other half of Onlook.

        I'm super fired up about this new version of Onlook for two reasons:

        1) It makes it so much easier to jump in and start designing and

        2) We have a much more intuitive, simplified toolbar control for styles that makes it even easier to craft your designs.

        This has been the third major version of Onlook, and each time has felt like a leap towards solving the gap between design and development. Our first product was a Chrome Extension, the second was a downloadable desktop app (Onlook Studio), and now we're releasing Onlook for Web.

        For all of the designers and non-technical people that just need a way to share their ideas with their engineering colleagues, the beta of this web version is a great start. But our goal continues be to truly solve the gap, so we'll be adding tons of great features that will let you go beyond ideation to actual implementation on real codebases.

        Some known bugs:

        – Sometimes generations don't "apply" after they're loaded: Kiet is working on a fix for this, but try clicking on the blank-template and re-prompting your change.

        - It can take a long time to load the AI chat: We're working on making this faster (or at least a little more entertaining).

        - Sometimes nothing shows up in the chat: Try going back to the homepage and re-prompting. This is something we want to make smoother.

        – Sometimes styles don't apply: Let us know! We're trying to catch the edge cases.

        Thank you all for your help and patience as we work through this early preview. Please join us on our Discord [https://discord.gg/ZZzadNQtns] and report any bugs or issues on GitHub repo: https://github.com/onlook-dev/onlook

        • rubenvanwyk 2 days ago
          Congrats with the launch! I think you’re tackling a core problem space - many people seem to go to v0 and just copy, paste from there. The drag and drop is really great. Curious - why did you go with Electron instead of Tauri? I imagine that would’ve significantly decreased your bundle size. Congrats again!
          • hoakiet98 2 days ago
            We considered Tauri but went with Electron because we needed the "frame" (the part inside the user window) to behave consistently across OS. This is not something that Tauri guarantees, so we went with Electron for Chromium instead. I

            n hindsight, it still would not have helped with the other desktop app based issue like friction of setting up so I think we made the right call.

            A large percentage of the bundle comes with shipping Bun as a fallback runtime for users who didn't have node installed. This could've been done better as well but it would still be 300MB+ bundle size.

          • grantfwilkinson 3 days ago
            The web version sounds like naturally the next step to removing friction and making it quicker to see the value of it. Love that you can visually edit post creation.

            Are you thinking most people will start their projects here or bring an existing one in to edit on? Maybe a github app/integration you could open a supported repo directly in onlook to run it?

            • hoakiet98 3 days ago
              Yes, import is on the roadmap. We're already supporting importing on the desktop app so will need to have a way to get the code into the sandbox. My plan is to have 1. Import from GitHub - We clone and do a best effort setup 2. Run an npx upload script on the local repository 3. Drop a bundle directly through an upload UI
            • WillAdams 3 days ago
              Logged in w/ my Github account (same as my username here), but nothing happens with the prompt:

              >create a site for creating, editing, and previewing G-code in 3D using blockly.

              and a screengrab of https://www.blockscad3d.com/editor/

              • D_R_Farrell 3 days ago
                Ah that's unfortunate – been having some issues with the rendered code being applied.

                Can you try it again and see? Or, click on the page, then add your screenshot to the chat with your prompt.

                Honestly doing 3D may be a bit tricky in Onlook but super curious to see if you get it to work. It works just like a normal browser would, but the complexity of knowing how to setup a 3D site like that may be too advanced for Onlook.

                • WillAdams 3 days ago
                  The button shows a wait state briefly, then nothing.
                  • D_R_Farrell 3 days ago
                    We were running into rate-limit issues with Codesandbox. We just increased our limit, so go ahead and try it again and let me know if it works!
              • esafak 3 days ago
                Any progress on the API that will enable you to support Svelte? https://github.com/onlook-dev/onlook/issues/625
                • hoakiet98 3 days ago
                  Hey esafak, Honestly, we became even more coupled to Next.js to provide a better experience. I think Svelte will keep getting deprioritized until we feel the experience is as good as it can get.

                  I know it's a bad answer, but I don't want to keep promising a feature that doesn't seem likely at this point. Will update the issue to be a won't fix for the time being.

                  • cadamsdotcom 2 days ago
                    Thanks, very polite way of explaining the benefits of focus for producing something quality.

                    It is hard to be not building the right tool for everyone - but trying to build a tool that's right for everyone is even harder than that.

                • cadamsdotcom 2 days ago
                  Very cool, and thanks for also exposing us to Unicorn Studio! https://www.unicorn.studio/
                • Nimishg14 2 days ago
                  Tried it once, wasn't very happy with the results. Honestly I was expecting a big jump from Sonnet 4 in terms of design quality.
                  • D_R_Farrell 2 days ago
                    Was it too boring or what was disappointing about the result?

                    Sonnet 4 has been producing much more reliable outputs, but it's always a challenge to push it to get really creative. I think there are probably great ways we could be prompting for more creative output, but something we'll need to keep experimenting with for sure.

                  • fakedang 3 days ago
                    https://m.youtube.com/watch?v=RjFBUkVfy1E

                    This should be your demo video on your home page instead of what you have. I didn't understand how you were different to a typical no-code tool until I saw the entire process of creating a react app, running it and actually changing stuff on the Onlook console.

                    • D_R_Farrell 3 days ago
                      Great feedback – we definitely should update our homepage content to have a more useful video that goes from 0 to 1 entirely.

                      Thanks for mentioning it!

                    • roggenbuck 3 days ago
                      Very cool!

                      You mentioned reducing friction of downloading as a reason for the web version. How did you find that to be a point of friction for your users?

                      • hoakiet98 3 days ago
                        We saw a big dropoff (about 40%) between people hitting download on the website and actually signing into the app. This is partially the app bundle size (500MB+ because we include a runtime binary) but also if you're on a platform we didn't support (like Linux for a while).
                      • homebodify 3 days ago
                        As a designer passionate about UX/UI or product design and vibe coding, I truly believe Onlook has the potential to be the tool that finally brings designers' dreams to life. I'm excited to see how Onlook can expand what's possible for designers and give us greater creative freedom. You have my full support!
                        • fakedang 3 days ago
                          Do you think Onlook could supersede Figma in terms of usability? This seems to me, a complete design outsider, like a Figma meets VS Code.
                          • homebodify 3 days ago
                            To be honest, I've been using Figma for a long time, but Figma hasn't reduced my workload a lot. So if we approach this from a workflow perspective rather than just as a tool, I would place more value on Onlook. It's hard to simply say right or wrong, but changes are definitely happening right now.
                          • hoakiet98 3 days ago
                            Thanks for the super early feedback and support, homebodify :)
                        • puppycodes 3 days ago
                          Looks interesting but for a design focused service to not be "Ready for mobile" yet isnt a great look.
                          • hoakiet98 2 days ago
                            fair point. we didn't really intend for the app to be used on mobile yet since it's like using Figma on mobile.
                            • puppycodes 2 days ago
                              Sure thing, but it would be great to be able to see examples of the app on a mobile device when visiting the site. Otherwise I have zero incentive to open it on my other device. My 2 cents is don't bank on being mysterious. Show us the goods without making us sign up, change devices, or work for it.

                              I personally loathe this trend of making us login after giving us a prompt box.

                              Just show us the app, your github does this well! Otherwise your lost in the sea of AI marketing pitches that overwhelm us daily.

                              • hoakiet98 2 days ago
                                It's honestly not so much being mysterious as much as the UI is not usable on mobile. I don't think we'll support mobile for a while given the extra design constraints that it imposes.

                                > I personally loathe this trend of making us login after giving us a prompt box.

                                I do too, and am very aware of how HN/other engineers feel on this topic. It's mostly a way to get around abuse and access issues. We have a pattern moving forward for guest accounts, but couldn't prioritize it in time for this launch.

                                I think not needing to sign in is a good way to kick the tire which helps growth as well. So point taken to prioritize this higher. Thank you :)

                          • sarthaksrinivas 3 days ago
                            The feedback loop between our users, mockups, and working react code is so tight with Onlook, it's fully replaced our Figma subscription

                            Question – is there a way to remove the selector ids from the generated code? We currently need to manually strip these from cursor

                            • hoakiet98 3 days ago
                              On the desktop app you'll be able to strip the IDs by stopping the run. There's no option for that yet on the beta web version. Let me know if that works :)
                            • SaltNHash 2 days ago
                              I was blown away by the original, but the performance on my machine made it prohibitive. Love the new direction. This will simplify adoption for what I reckon will be a huge portion of your audience. Well done!
                              • hoakiet98 2 days ago
                                Thank you! What did you like from the original that you think we should port over right away?
                              • handfuloflight 3 days ago
                                TRPCClientError: Failed to create sandbox: 0 of 40 sandboxes remaining.

                                Aw, shucks.

                                • D_R_Farrell 3 days ago
                                  The limit was just raised – Go ahead and try it again and let me know if it works!
                                  • D_R_Farrell 3 days ago
                                    We got rate-limited but are in contact with the team to get more sandboxes!

                                    Hang-tight!

                                    • handfuloflight 3 days ago
                                      While I have you here. Can you explain to me how do I import my existing repo into this?
                                      • D_R_Farrell 3 days ago
                                        You've got us here all day haha

                                        If you use our Desktop Product – https://onlook.com/download - you can import your projects there and use a lot more features like Layers, Components, Pages and more.

                                        We don't have the ability for you to import existing repos for this beta product just yet, but it's something we'll be enabling in the coming weeks for sure.

                                  • mdrzn 2 days ago
                                    Seems very interesting, would love to have it integrated inside Cursor to make easier edits to the code AI creates.
                                    • hoakiet98 2 days ago
                                      Yes, we did that for the desktop version but will need to add an SSH option for local IDEs like Cursor
                                    • sargampdl 3 days ago
                                      congrats on the launch! I love that we can also make the website like you want instead of praying claude and then to god unlike most tools out there
                                      • D_R_Farrell 3 days ago
                                        The direct-manipulation + the ability to select elements and chat with them have really helped provide better outputs in my experience.

                                        I'm excited about the infinite canvas too – it makes it a lot more fun to move around and design.

                                      • hoakiet98 3 days ago
                                        Seems we're being rate-limited by Codesandbox. Sorry for the inconvenience if you're not able to start a session.
                                        • hoakiet98 3 days ago
                                          Got the team to increase the limit. We're back!
                                        • curiouser3 3 days ago
                                          doesn't work at all, hugged to death?
                                          • D_R_Farrell 3 days ago
                                            Heyo we were running into rate-limits with Codesandbox, but we just upped the limit so try giving it another shot and let me know if it works!
                                            • D_R_Farrell 3 days ago
                                              What issues are you running into? Does it take a while to load or where do you get stuck?
                                            • asantanilla 3 days ago
                                              Super hyped to finally be able to use the web version! In love with the desktop. Congrats on the launch team!
                                            • popalchemist 11 hours ago
                                              Is this FULLY open-source, or are key features locked behind a paywall?
                                              • instagary 3 days ago
                                                Congrats on the launch, love the web first re-design. Excited to try it out!
                                                • hoakiet98 3 days ago
                                                  Thank you for the support. Let me know if you run into any issues :)
                                                • harrisontelyan 3 days ago
                                                  y'all are shipping quick, holy cow. looking forward to future updates and more founders stepping into the design world!
                                                  • pabloberm1 3 days ago
                                                    Congrats on the launch this is very very COOL!!
                                                    • D_R_Farrell 3 days ago
                                                      Thanks pablo!! Stoked about this!
                                                    • connor_paton 3 days ago
                                                      This is so sick!
                                                      • dtond 3 days ago
                                                        Congrats on the launch. HUGE
                                                      • tarof 3 days ago
                                                        Love it!
                                                      • willcray 3 days ago
                                                        I love using Onlook
                                                        • navvyeanand 3 days ago
                                                          Amazing work!
                                                          • D_R_Farrell 3 days ago
                                                            Appreciate your support, Navvye!!! When are you guys launching??? Haha
                                                          • perksalad 2 days ago
                                                            Great work!
                                                          • avipeltz 3 days ago
                                                            Sick as hell
                                                            • hoakiet98 3 days ago
                                                              Thanks! Let me know how you like it
                                                            • LennyWhiteJr 3 days ago
                                                              based