- How do I install juaniquillo/mjml-backend-components in a Laravel app?
- Install it with Composer by running composer require juaniquillo/mjml-backend-components. The package has a low code footprint and is expected to be discovered automatically by Laravel, with views or config publishable through artisan vendor:publish if the repository provides them. Check the README on the tagged release for any publish step or manual service provider registration before wiring it into a mailable.
- Does juaniquillo/mjml-backend-components require Node.js or the MJML CLI at runtime?
- That is the first thing to verify in the source: check whether MJML is compiled in pure PHP or by shelling out to the mjml Node CLI. If it shells out, every environment including queue workers and the production container image needs Node plus the mjml binary installed. This single decision determines whether the package is a pure Composer dependency or a change to your deployment topology.
- Which Laravel and PHP versions does this MJML package support?
- Laravel 10, 11 and 12 on PHP 8.1+ is the presumed matrix, but it is not confirmed in the package overview. Open composer.json in the repository and read the exact illuminate/support and php constraints on the tag you intend to use. Do not assume compatibility with older Laravel releases or with PHP 8.0 and below.
- Is version 0.1.0 of this package safe to use in production emails?
- At v0.1.0 the public API is not stabilized: semver permits breaking changes in minor and patch releases, and the component vocabulary is still being filled in as missing MJML tags land. Treat it as pilot-only and try it behind a feature flag on one low-risk transactional email such as a password reset or receipt. Pin the exact version in composer.json rather than using a caret constraint.
- How do these MJML components work with Laravel Mailables and Notifications?
- The package sits at the rendering layer, composing MJML templates and outputting email-client-safe HTML that a Mailable or Notification can use as its view or body. It does not touch transport, so your existing Mailgun, SES or Postmark drivers keep working unchanged. Whether components are registered as Blade components, class-based builders or a facade should be confirmed in the README.
- Does juaniquillo/mjml-backend-components support all MJML tags?
- No. Open "Missing tags" work in the repository indicates the component vocabulary is still incomplete at v0.1.0, and unsupported elements may render degraded or as raw markup. Snapshot-test each template you adopt so gaps surface before your users see them. Published and overridable views or config are the escape hatch if a specific tag renders incorrectly.
- Are there alternatives to this package for building MJML emails in Laravel?
- Yes. You can compile MJML yourself with the Node CLI as a build step, use a generic MJML wrapper, or keep hand-written Blade email templates. This package's advantage is a small, forkable surface area that maps MJML components into Laravel's view layer. Check for collisions with any MJML or email-builder package already in your composer.json before adding it.
- Does this package have tests covering the rendered HTML output?
- The repository shows CI and Dependabot activity, but whether the suite asserts rendered output on the tagged commit needs verification. Regardless of what upstream covers, add your own snapshot tests that assert the generated HTML for every template you adopt. That is your regression guard against missing tags and future breaking changes.
- Is there an HTML injection risk in the emails this package renders?
- A changelog entry titled "Attribute scaping" (escaping) suggests values interpolated into email HTML attributes may not have been escaped in earlier versions, which is an injection vector into rendered email bodies. Confirm the fix is complete and covered by tests before placing user-supplied data into attributes. Escape untrusted values yourself as defence in depth.
- Who maintains juaniquillo/mjml-backend-components and what license does it use?
- It is effectively a single-maintainer package with a bus factor of one, no commercial support and no LTS commitment; GitHub issues are the only escalation path. Confirm the license in the repository before adopting. Budget for your team to fork and patch it, since the small surface area makes that feasible and is the main mitigant.