Basically, it's a visual page builder that plugs into your own Next.js/Remix/React/etc. codebase. Your marketing/content/design team can then build and publish pages without filing tickets on eng. This (content management) is the main use case.
The most interesting aspect is that editors can drag and drop React components from your own codebase as building blocks. This is very powerful, esp. with e.g. data fetching React components.
Why open source? Because we love the tool. 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 a broader community take it in unexplored directions. Community users have even started using it to build emails with React.Email and mobile screens in React Native.
I think another thing interesting about Plasmic is that it is a bit ambitious in trying to combine 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, or a customer portal). With the right foundations, we think these can be unified—Plasmic’s UI can adapt to different levels of control for different personas/tasks.
So a newer use case is that you can use it to build applications as well as websites, for both developers and non-developers. This is the more experimental side of the project, beyond the content management use case.
All things considered, they seem pretty similar - visual UI to generate React code that works alongside existing codebase, open-source & self-hostable, etc.
Congrats on going open source! Which components are open sourced specifically? Is there any chance it will be self-hosteable? I don't want to host it myself any time soon but I prefer giving my money to a company where that's an option.
You can think of it like that - GrapesJS ultimately outputs HTML that exists in its own universe, whereas Plasmic focuses more on integrating with existing codebases, where you might want to use your React components, render in your React context, etc.
I talk about the "why" a bit above, but we've talked about how to open source it internally since almost its inception, but there's work involved in open sourcing that we just had to prioritize like any other work item, as well as concerns around whether we were ready to support it (for instance, in light of rapidly changing code and data).
It's a visual page builder that integrates with React codebases. Content management is our biggest use case - i.e., dev team integrates with Plasmic, and then marketing/content/design teams can create landing pages on the marketing site.
(A newer use case is building applications as well, hence some of the comparisons with Retool etc. There's actually quite a bit of overlap between these use cases, esp. when considering external-facing "customer portal"-style applications.)
I wouldn't. A huge amount of interactivity can be done in pure CSS, and often design work is exploratory or experimental and doesn't need to output a fully functional component, it just needs the functionality CSS and HTML provide like interactive inputs and focus states.
Once you get the basic design abilities down, you can behind the scenes setup logic using some framework (sure you can use React, but I think tying a tool to a framework like that is a bad idea, React won't last forever and hopefully will die soon in place of newer better frameworks) that doesn't actually impact the basic HTML/CSS that is output.
Devs will still be needed to hook up designs to code logic, but at least give designers the ability to give devs clean HTML/CSS for them to wire up into JSX or Vue templates or whatever because currently many front-end devs are absolutely shit at HTML and CSS and React encourages lots of bad practices with HTML and CSS.
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.
Appreciate the summary! There are a handful of new players building around react components - really interesting space. We believe this is one aspect of a broader movement so educating the market is a group effort :)
Re: "super heavy" output: A blank component should result in one corresponding div. Maybe you're weighing the API client library? You can codegen pure React modules if you don't want the loader library itself.
If you have any specific feedback on the UI, would love to listen. Thank you!
The whole thing is recorded, I posted a link to twitch in slack.
An unhydrated card like the testimonial example was 28k via code gen.
I put tons of feedback in that video, if your teams are not watching it, you are missing out immensely
Despite not pulling a lot of punches in my stream, I still think Plasmic is closest of all I have tried to a developer friendly, maybe lovable in time, product