This PR replaces Craft.js with a new vanilla editor. While the new editor is visually similar to the previous one it enables a few major changes to the project:
Store created pages in pure HTML
Minimal bundle size and a smaller codebase
Lay the foundation for various requested features (eg. custom js scripts, custom tailwind components, dynamic content and other requested features)
Beta Testing
The beta starter project on destack-starter-beta is updated for anyone willing to test the new version.
Tradeoffs
A major change with the new editor is that Destack no longer uses a custom JSON format to store the user generated pages and uses pure HTML instead. Besides the many benefits and significant reduction in complexity not having React based components comes with a tradeoff in flexibility. If not handle properly, more flexibility could be dangerous as uncle Ben said. For example, someone might use the editor in a user facing application not realising that there's no XSS validation by default.
Another tradeoff is that it's harder to implement state management with the vanilla editor. This is not generally a problem as HTML acts as the state but there are a few cases that state management is useful. For example, state diffs required by Undo/Redo are easier to handle in JSON files than HTML files that are plain text.
Moving forward
[x] Wait a few days/weeks for people to test out the new beta version
[x] Enable tree shaking to reduce bundle size and loading time
Overview
This PR replaces Craft.js with a new vanilla editor. While the new editor is visually similar to the previous one it enables a few major changes to the project:
Beta Testing
The beta starter project on destack-starter-beta is updated for anyone willing to test the new version.
Tradeoffs
A major change with the new editor is that Destack no longer uses a custom JSON format to store the user generated pages and uses pure HTML instead. Besides the many benefits and significant reduction in complexity not having React based components comes with a tradeoff in flexibility. If not handle properly, more flexibility could be dangerous as uncle Ben said. For example, someone might use the editor in a user facing application not realising that there's no XSS validation by default.
Another tradeoff is that it's harder to implement state management with the vanilla editor. This is not generally a problem as HTML acts as the state but there are a few cases that state management is useful. For example, state diffs required by Undo/Redo are easier to handle in JSON files than HTML files that are plain text.
Moving forward