makraz/ux-vvvebjs
A Laravel package that integrates the VvvebJs drag-and-drop page builder, letting you create and edit HTML pages visually. It provides UX components and assets for quick setup and customization in Laravel applications.
Verdict up front: v0.1.0 is a Symfony UX Bundle, not a Laravel package. It integrates with Symfony Forms, Symfony UX/Stimulus, EasyAdmin, and AssetMapper/Webpack Encore. None of those are Laravel primitives. Treat this as a foreign-stack dependency rather than a drop-in, and scope the evaluation accordingly.
Architecture fit
VvvebJsType — a Symfony Form Type that renders a visual builder and persists HTML into a hidden field. Laravel has no Symfony Form component, so the primary integration surface does not exist in our stack.symfony/stimulus-bundle >= 2.9.1) is a hard requirement. Stimulus can be used standalone in Laravel, but the bundle's controllers are registered via Symfony's UX bundle conventions; wiring them through Vite requires manual adapter work.VvvebJsAdminField are irrelevant to us (Filament/Nova are our admin equivalents).UploadHandlerInterface, local / Flysystem / custom) is conceptually compatible with Laravel's Flysystem-backed filesystem, but the interface is Symfony-typed and would need a shim.Integration feasibility
POST /vvvebjs/upload) is Symfony-routed. We would not expose it as-is; we would reimplement it behind our own authenticated, CSRF-protected Laravel route.Technical risk
iframe, script-src, possibly connect-src), GDPR/data-residency questions for EU traffic, and outage blast radius. Self-hosting via cdn_url is supported and should be treated as mandatory, not optional.Key questions to resolve before any commitment
AI_ASSISTANT plugin send data, and can it be disabled cleanly?Stack fit
Migration path This is a greenfield adoption, not a migration. Recommended path:
VvvebJsType options, upload route, sanitizer, and asset build.Compatibility
^0.1. Add a lockfile review step to the release checklist.symfony/stimulus-bundle >= 2.9.1 does not pull a conflicting Symfony component set into a Laravel app.Sequencing
Maintenance
Support
Scaling
public/ local path does not scale horizontally and should be avoided on multi-node deployments.Failure modes
| Mode | Impact | Mitigation |
|---|---|---|
| jsDelivr outage / blocked by CSP or corporate proxy | Editor fails to load; authoring fully blocked | Self-host assets; mandatory, not optional |
| Stored XSS via authored HTML | Account/session compromise, defacement | Server-side sanitization on write and render |
| Malicious upload (SVG, polyglot, oversized) | XSS, storage exhaustion, potential RCE via misconfig | Magic-byte validation, re-encode images, per-user quota, block SVG or serve from isolated origin |
| Iframe HTML sync failure on unload | Silent content loss on navigation | Server-side draft autosave; do not rely on beforeunload sync |
| Breaking change in a 0.x upgrade | Editor breaks in production | Exact version pinning; staging validation; changelog review gate |
| Maintainer abandonment | No upstream fixes; frozen dependency | Self-hosted assets + small, well-bounded adapter = survivable exit |
| AI_ASSISTANT data egress | Content leaves our boundary unexpectedly | Disable the plugin; verify no default activation |
Ramp-up
How can I help you explore Laravel packages today?