Future of Craft.js - taking it to the next level! 🚀
# Background Hey folks! Craft.js is about 3 years old now and in that time we've seen plenty of Craft-based page editor implementations in the wild. I'm incredibly grateful for everyone who has been using Craft, and for the feedback I have gotten all this while. Having personally worked at some companies that used Craft has helped me to recognise the strengths and as well some of the shortcomings of the framework. One of those shortcomings that I felt was in the state management system itself. While the current `EditorState` in Craft works pretty well, it falls short for more complex page editor requirements. Currently, it isn't quite possible to build complete UI components with Craft. Let's take a look at how a typical UI component built in React looks like: ```tsx const posts = [...]; const MyComponent = (props) => { const [counter, setCounter] = useState(0); return ( <div> <h1>Hello World!</h1> { props.enabled && <p>I'm enabled!</p> } { counter > 0 && ( <h2>I'm non-negative!</h2> ) } { posts.map(post => <h2>{post.name}</h2>) } <button onClick={() => { setCounter(counter + 1); }}> Increment </button> </div> ) } ``` A React component is able to do the following:- - Render an HTML ou
Posted by prevwong on Apr 4, 2023, 12:41 PM
Tags
Related issues
- To be fair, Inform7 can't succeed, generally, because there is no market for the kind of games that you create with Inform7.
- > The notion that somehow LR reliability is misunderstood by Consumer Reports, JD Power, Car & Driver, Automobile etc.
- Custom trigger IDs are not displayed in the new 2026.10 trigger selector
- I hate that too, but I think it’s more the ux than the concept of a default.
- > The biggest problem with UX developers is they know better than you AND force you into their paradigm.
- "Focus follows mouse" is what I use to keep the file manager from popping up when click-dragging files.
Raise real-world problems, find people facing the same issue, and discuss solutions.2,500 issues0 comments
ux (Other)
To be fair, Inform7 can't succeed, generally, because there is no market for the kind of games that you create with Inform7.
New> The notion that somehow LR reliability is misunderstood by Consumer Reports, JD Power, Car & Driver, Automobile etc.
Custom trigger IDs are not displayed in the new 2026.10 trigger selector
I hate that too, but I think it’s more the ux than the concept of a default.
> The biggest problem with UX developers is they know better than you AND force you into their paradigm.
"Focus follows mouse" is what I use to keep the file manager from popping up when click-dragging files.
The biggest problem with this is if the target URL doesn't load but also doesn't quickly error out, like e.g.
Google wants to build up a private web here.
Future of Craft.js - taking it to the next level! 🚀
# Background Hey folks! Craft.js is about 3 years old now and in that time we've seen plenty of Craft-based page editor implementations in the wild. I'm incredibly grateful for everyone who has been using Craft, and for the feedback I have gotten all this while. Having personally worked at some companies that used Craft has helped me to recognise the strengths and as well some of the shortcomings of the framework. One of those shortcomings that I felt was in the state management system itself. While the current `EditorState` in Craft works pretty well, it falls short for more complex page editor requirements. Currently, it isn't quite possible to build complete UI components with Craft. Let's take a look at how a typical UI component built in React looks like: ```tsx const posts = [...]; const MyComponent = (props) => { const [counter, setCounter] = useState(0); return ( <div> <h1>Hello World!</h1> { props.enabled && <p>I'm enabled!</p> } { counter > 0 && ( <h2>I'm non-negative!</h2> ) } { posts.map(post => <h2>{post.name}</h2>) } <button onClick={() => { setCounter(counter + 1); }}> Increment </button> </div> ) } ``` A React component is able to do the following:- - Render an HTML ou
Comments (0)
No comments yet. Start the discussion.