HNHacker News
TopNewBestAskShowJobs

yaaang

261 karma · joined March 10, 2011

Me: https://twitter.com/yaaang and https://yz.mit.edu

I work on https://www.plasmic.app.

submissionscomments
yaaang··on Show HN: Plasmic — open source visual builder for React
Hello again HN!

We’ve been working on this tool for several years now and got HN’d in the past (https://news.ycombinator.com/item?id=29563629), but we’ve just released it as an open source project.

It combines some seemingly disparate genres:

- Webflow, Wordpress and other page builders

- Retool and other tool builders

- Glide and no-code app builders

- Contentful and other CMSes

Today these are different tools to specialize in, but the line between, say, a website and an application is blurry (consider an ecommerce storefront with user logins). With the right foundations, we think these can be unified—Plasmic’s UI can adapt to different levels of control for different personas/tasks.

But more importantly, unlike existing tools, Plasmic integrates with codebases. This is critical to making low-code scale past the complexity ceiling that all such tools (including Plasmic) have. You can drag and drop existing complex React components, and you can visually create new UIs/components within traditionally-coded applications, seamlessly weaving code and no-code.

Main use cases we’ve seen:

- Content management: let marketing drag/drop your React components to build landing pages in your Next.js website, with design guardrails

- Applications: let developers and technical users quickly build internal tools, client portals, and business software

- Website builder and design tool that doesn’t limit you to some built-in ecommerce platform, CMS, or hosting

Check out some videos/demos of building:

- Twitter clone: https://youtu.be/rpdjrFuVMog (live app: https://twitter-staging.plasmic.run)

- Service desk app: https://youtu.be/rYqSpUEJSTw (live app: https://tickets.plasmic.run)

- Vercel marketing page: https://youtu.be/itvbmgLZvcM (live app: https://vercel-workflow.vercel.app)

- Shopify headless storefront: https://commerce.plasmic.run

- Apple.com: https://apple.plasmic.run

Plasmic has been in production deployment at companies big and small. But we think it can grow far beyond ourselves as an open source project. We’d love to see it taken in new unexplored directions! Community users have even started using it to build emails with React.Email and mobile screens in React Native—our permission not required.

Would love to hear what you think!

yaaang··on Ask HN: What low code platforms are worth using?
As a "no-code sales person," I actually agree. It's why we started on https://plasmic.app, to bridge the gap between low-code and code—we think there can exist low-code tools that integrate deeply with existing code and codebases, to allow scaling in complexity.

A very nice effect of this is cross-functional collaboration—once it's possible for the team's developers to provide the right components as building blocks, then the non-developers in operations, design, marketing and product functions can compose these into full pages.

yaaang··on Ask HN: What low code platforms are worth using?
https://plasmic.app is a soon-open-source visual builder that (uniquely) integrates with codebases. (I work on this!)

So you can build within existing apps and use your own arbitrarily complex React components. This is what makes it suitable for complex production projects, because (as many others note) you'll invariably hit ceilings with typical low-code tools.

It focuses on both websites and applications, so it can be wielded as either a Webflow or Retool alternative.

yaaang··on Show HN: Puck – Open-source visual editor for React
Hi! I work on Plasmic. Plasmic's most common use case is actually the same one, letting content editors build pages in your existing website using your React components.

Congrats on this release! We are actually open sourcing Plasmic soon, would love to discuss any possible ways to collaborate.

yaaang··on Ask HN: A no-code framework – do you think it's a good idea?
That sounds like Plasmic: https://plasmic.app

You register React components as building blocks, and compose them together into websites and web apps.

yaaang··on Page builders might not be a good idea
Thanks for the mention of Plasmic!

Indeed, I believe there's a lot of innovation to be had by page builders - Plasmic's approach is to blur the lines between the codebase and the visual editor, so we try to directly confront the myriad issues laid out by three OP.

yaaang··on Codux: Visual IDE for React
It depends on how extensive the edits/created components are that you want to allow the non-developer to make.

https://plasmic.app experimented with bringing together design+code in this way, but we found it didn't take hold outside of small visual tweaks. We ended up taking a different approach to this specific problem - letting you build screens out of React components from your codebase (and have the screens rendered back into your app). This has worked out much better for us, as the surface area for coordination between the developer and non-developer is much narrower and less brittle as a workflow (and at the same time doesn't put an IDE in front of the non-developer).

yaaang··on Show HN: Open-Source Page Block Builder with Remix and Tailwind CSS
There are other approaches. Tools like https://www.plasmic.app/ give you a drag and drop page builder, but integrated into your codebase so that you can drag and drop your own React components for instance - exactly so that you can build upon rather than circumvent developers' work, while letting marketing/design/product/ops/etc directly edit websites and applications. (I work on this.)
yaaang··on Show HN: Open-Source Page Block Builder with Remix and Tailwind CSS
https://www.plasmic.app/ has done this since its inception. It is a page builder that has drag and drop content editing, integrates with arbitrary codebases and modern frameworks like NextJS, and builds static (or non static) sites that are hosted on Vercel/Netlify/etc. (I work on this.)
yaaang··on Ask HN: Low code React builder for front end
Plasmic: https://www.plasmic.app

Recently it started merging a chakra UI contrib as well: https://github.com/plasmicapp/plasmic/pull/51

yaaang··on Figma Alternatives
I don't follow how HTML comes anything close to expressing dynamism, composition, state, Turing completeness, etc.

Sure, you can encode whatever you want inside of data attributes, but that's just ignoring the problem. You still have to decide on a language to express all that within your data attributes.

React server components also does not is not trying to serialize this. Quite the opposite. We have an in-depth write up here: https://www.plasmic.app/blog/how-react-server-components-wor...

(Sise note: Plasmic's AST is in the open and has an API.)

yaaang··on No-code is the future of programming. That's great news for engineers
Not true for all such tools. Though like a sibling comment suggests, part of the issue is that no-code is defined too broadly to include everything under the sun.

I work on a no-code tool that checks those specific boxes (shameless plug: https://www.plasmic.app), but the use case is very different from Bubble. The key is that it explicitly doesn't try to replace all code, and was designed from the ground up to integrate deeply with existing codebases. I don't think we need be the only one, other tools can also do the same. But this aspect is by far the most complex part of building this product. That, and the pressure to create vendor lock-in is real.

yaaang··on No-code is the future of programming. That's great news for engineers
The problem is that no-code is not well-defined. It's used to label everything from Excel to Airtable to Zapier to Webflow to Bubble to Retool.

And within that umbrella, some of them are relevant to the HN crowd.

Your examples, like spreadsheets for supply chain planning or DAWs for music production, are indeed disconnected from what developers touch. Your Ableton projects don't concern them.

But other times, the tool very much impacts developers. For instance, I work on https://www.plasmic.app, which lets marketing teams build landing pages and other content on React websites. Here, the stakes are higher when it comes to page performance, design system consistency, component reuse, and so on. As such, developers heavily vet the tool, similar to picking a CMS, and virtually all of our customer adoption was driven by developers.

So relevancy to devs depends entirely on what specific tool/use case you're talking about.

yaaang··on Plasmic – A headless page builder
The API-based integration does track impressions. Besides that, you can also use codegen, which doesn't.
yaaang··on Plasmic – A headless page builder
(Copying response from elsewhere)

It's headless as in "headless CMS" - Plasmic is decoupled from your frontend stack, which you run and own. The content you design is delivered via API into your site/app.

yaaang··on Plasmic – A headless page builder
You may be interested in https://plasmic.app/casestudies. Note that Plasmic is different from these because it's a full free-form web design tool, so it doesn't restrict you to blocks that also have be authored by developers.
yaaang··on Plasmic – A headless page builder
Really not trying to mislead/annoy - Plasmic's client libraries are open source and on GitHub, but not the visual editor currently. Will add clarification to the repo, but any other suggestions are welcome.
yaaang··on Plasmic – A headless page builder
It's the opposite - it has no vendor/hosting lock-in. You run and own your own frontend stack, hosting, etc. Plasmic is a visual editor that plugs into your stack.
yaaang··on Plasmic – A headless page builder
It's different from TinaCMS because it's a full free-form page builder/web design tool. The developer doesn't need to write any CMS template/schema code.

TinaCMS is like other headless CMSes with visual editors, where you're limited to using blocks that developers need to code up.

(Both support Markdown text content editing and drag/drop of your own components.)

yaaang··on Plasmic – A headless page builder
It's headless as in "headless CMS" - Plasmic is decoupled from your frontend stack, which you run and own. The content you design is delivered via API into your site/app.
yaaang··on Hydrogen: React-based framework for building custom storefronts
What makes this noteworthy is that it's built on the still-heavily-WIP React Server Components ([1]), so unlike SSR frameworks, it doesn't require downloading full bundles of JS and raw data to re-render and hydrate your entire UI client-side. This is also the direction Next.js is heading ([2] and [3]), and will have significant ramifications for both architecture and performance of React applications for years to come. Here's a recent talk I gave on the general topic of partial hydration: https://www.youtube.com/watch?v=U28rjWrGVxk

I work on a no-code visual page builder for React-based sites like this (https://www.plasmic.app) - a major customer segment is headless commerce sites, so this is something we care a lot about.

[1]: https://shopify.dev/api/hydrogen/framework/react-server-comp...

[2]: https://github.com/vercel/next-rsc-demo

[3]: https://nextjs.org/blog/next-12#react-server-components

yaaang··on Show HN: Plasmic — web design tool that plugs into React and other codebases
Thanks, super helpful. These are 100% aligned with the use cases we're trying to support.
yaaang··on Show HN: Plasmic — web design tool that plugs into React and other codebases
Yes - this is very much on the roadmap. Any specific UI you're thinking of?
yaaang··on Show HN: Plasmic — web design tool that plugs into React and other codebases
Hi HN! I work on Plasmic. It’s a visual page builder and design tool that generates React components and integrates seamlessly into your existing web app codebase. It empowers content creators to build things for production without involving developers.

When we started on Plasmic two years ago, we didn’t begin with this product-market. I’d like to share the backstory of how we got to where we are, but first, a bit more explanation of what Plasmic is for:

Today, teams that have a marketing/ecommerce/etc. website frequently run on a “JAMstack”—typically statically generated using frameworks such as Next.js. Whenever marketing or other business units have a request, developers either have to code up everything by hand, or set up a “headless CMS”—giant JSON editors that business users use to specify the content a page should show. Developers need to define the schema to reflect the (near-infinite) design needs of the business users, who in turn must interface with the schema by filling out sprawling complex forms that look nothing like the final page they are creating. Companies do a ton of work to build out this sort of bespoke non-visual page editing infrastructure. CMSes have perfectly reasonable uses, but visual content isn’t one of them.

With Plasmic, developers just need to render a <PlasmicComponent/> placeholder wherever they want Plasmic content to show up. Content creators then create their content using Plasmic’s visual editor. At build time, the Plasmic content gets downloaded and swapped in, and goes live with the rest of the site. This eliminates tons of requests on developers and lets content creators iterate quickly.

The visual editor is at the core of Plasmic, but we wanted it to be more than just a big form for filling out CSS values. We wanted:

* A design surface that resembles Figma / Sketch, but powered by real browser layout, allowing you to design across multiple variants and screen sizes at once. * Styling and layout that is intuitive and smooths over CSS’s rough edges. * A deep system of components and variants, where variants can provide specific overrides without unnecessary duplication. This is used for everything from responsive design to A/B testing and personalization to component states. * Design tokens and mixins (bundles of styles) you can use to systemize your designs. * Ability to use arbitrary custom React components in your design.

This last bullet — using arbitrary React components — is critical; it allows developers to craft custom building blocks for content creators to drag/drop and visually manipulate in the editor. These components can be anything from design system components to data-fetching blocks to animation/interaction wrappers. For instance, you can trivially introduce new types of reveal animations or new data integrations not built into Plasmic. This effectively lets developers extend and customize the platform, and lets them “build their own page builder” for their broader team to use.

Here’s a segment from our recent Next.js Conf talk showing this in action: https://www.youtube.com/watch?v=fhEwNlzzobE&t=278s

Please check it out—sign up at https://www.plasmic.app. We’d love any questions and feedback you have!

===

And now some backstory of how we got here.

We’ve worked on many product teams, where designers create vector drawings, and developers try to recreate them from scratch using the “real” tech stack. Because there are two parallel sources of truth that often diverge, getting anything done involved tedious rounds of back-and-forth to get everyone on the same page. When we first started on Plasmic two years ago, we wanted to create a design tool for React that can produce not just pretty mock-ups, but actually generate the final production UI code; it can be the single source of truth for designs, empowering designers to directly impact production, and freeing developers from rounds of pixel-pushing. Far from a new idea, but no existing tool has quite executed on this vision the way that we think about it.

So we built a visual editor that tries to be familiar to users of Figma/Sketch/XD, but uses true browser layout with CSS and DOM. Then we generated real production-quality “presentational” React components from your designs that live in your codebase, which you can use for your real application. Critically, this is not just a one-time export—instead, the generated React components expose an API where you can attach event handlers, pipe in real data, and add React hooks, but still allows you to keep updating the design in Plasmic and re-generating the code without losing your changes. This API between design and code is what made Plasmic a powerful tool and shared source of truth across a team. You can see a video of our very first release here: https://www.youtube.com/watch?v=K_YzFBd7b2I.

We grew a budding community of users (both developers and non-developers) who believed in this vision, and they started designing and building complex and interactive applications with Plasmic. We ourselves use Plasmic to build Plasmic itself, a very complex web app—and we were hooked!

In general, however, we found it hard for larger teams to adopt this radical new workflow; some developers prefer hand-crafting their CSS, some designers would rather not carry the additional burden of designing directly for production, and it was challenging for everyone on a team to agree on the right approach. While we truly believe that the designer-developer hand-off is still ripe for disruption, we wanted to find a use case where the pain was more pronounced.

We soon noticed there was a specific segment that was growing fastest—e-commerce and marketing websites. Here, the pain is acute—marketers and designers are churning out new promotions and landing pages at lightning speed, but are then blocked on developers to make them real. The pain is real both for marketing—who is responsible for results and wants these pages live yesterday!—and for developers, who are often pulled away from deeper engineering work to build these pages. We found Plasmic to be the perfect tool here, with both sides of the table motivated to make this work. After our first enterprise contracts, we decided to double down on the direction.

We’re continuing to grow as a “visual CMS,” but we still have an eye on adjacent use cases within visual design, particularly given the heavy overlap. Designing directly for production is still a use case that is dear to our hearts, and we believe that there is still a ton of untapped potential for direct manipulation, visual creation, and democratizing software construction in general.

I’d love to invite any questions and thoughts you have!

yaaang··on Poll: What database does your company use?
First off - whatever you're doing, you'll probably be fine using either.

That said, I'm generally more frustrated when using MySQL than when using PG. Here's a sample of the problems I've encountered from using both MySQL and PG. I haven't updated my list in a while now - please feel free to correct me on things - but hopefully it's a little more illustrative than that Wikipedia feature matrix, and a little more specific to MySQL vs. PG. (This list is a cleaned-up selection from my notes wiki at http://yz.mit.edu/notes/Hackery.)

No referential integrity.

No constraints (CHECK).

No sort merge join, let alone hash-join. http://www.dbms2.com/2008/07/10/how-is-mysqls-join-performan..., http://www.mysqlperformanceblog.com/2006/06/09/why-mysql-cou...

Generally poor at analytical workloads, since it's designed for transactional workloads.

Can't reopen TEMP table - WTF? (Still not fixed!) http://bugs.mysql.com/bug.php?id=10327

Multiple storage engines has always restricted progress: http://www.mysqlperformanceblog.com/2010/05/08/the-doom-of-m... (PG also supported multiple storage engines in 80s, then concentrated on one)

No WITH clause: http://stackoverflow.com/questions/324935/mysql-with-clause

Crappy errors: “Incorrect key file for table ‘stock’; try to repair it” on “alter table stock add constraint pk_stock primary key (s_w_id, s_i_id);” where stock is in InnoDB (which has no “repair table”) means I have no /tmp space (no Google answers)

Crappy EXPLAIN output - somewhat better when using the visual-explain tool from Percona.

InnoDB auto-extends ibdata1 file; only way to trim (garbage collect) is dumping and loading.

Scoping is broken:

  mysql> create table t(a int, b int); Query OK, 0 rows affected (3.30 sec)
  mysql> select a, (select count(*) from (select b from t where a = u.a group by b) v) from t u;
  ERROR 1054 (42S22): Unknown column ‘u.a’ in ‘where clause’
Optimizer leaves plenty to be desired, e.g. not pruning unnecessary joins.

“InnoDB is still broken…Just last week we had to drop/re-create an InnoDB-table in one project because it would not allow to add an index anymore, no matter what we tried…Mysql::Error: Incorrect key file for table 'foo'; try to repair it: CREATE INDEX [...]” http://news.ycombinator.com/item?id=2176062

MySQL only recently got such things as per-statement triggers and procedural language support.

MySQL has only its own internal auth system, whereas PG supports a wide array of auth providers.

PG has more supple ALTER TABLE implementation.

MySQL doesn’t support ASC/DESC clauses for indexes http://explainextended.com/2010/11/02/mixed-ascdesc-sorting-...

Optimizer only recently started working properly with certain subqueries

OK documentation, but still considerably unpolished compared to PG's. Random omission: auto_increment jumps up to next power of 2 but inconsistently across versions (platforms?).

(Older issue, not sure if it's still relevant) Crappy concurrency, >3 cores sucks vs PG: http://spyced.blogspot.com/2006/12/benchmark-postgresql-beat...