Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Biome Js Bundle Laravel Package

kocal/biome-js-bundle

Symfony bundle that integrates Biome, the fast JavaScript, TypeScript, and JSON formatter and linter, into your project. Configure Biome from Symfony and run checks or formatting through convenient console commands.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Toolchain consolidation (build vs. buy). The core question this package lets you answer cheaply: does front-end linting/formatting belong in the PHP build pipeline (Composer) or in a separate Node pipeline? Adopting it commits the product to "no Node.js required" as a supported constraint; rejecting it keeps Node as a first-class dev dependency.
  • CI and Docker footprint roadmap. Removing Node/npm from build images is a real, measurable win (image size, install time, CVE surface, caching layers). This is the strongest product-level argument and should be the primary driver of the decision.
  • Onboarding/DX investment. One fewer runtime for new PHP developers to install, pin, and patch. Directly reduces "it works on my machine" support load on the platform team.
  • Standardization decision. Biome is formatter + linter in one Rust binary with one biome.json. Choosing it settles style-tool debates by default configuration instead of ESLint/Prettier plugin churn.
  • ESLint + Prettier migration planning. If a migration is already on the roadmap, this bundle is the delivery mechanism for the Symfony side — decide it as part of the migration epic, not as a standalone adoption.
  • Scoping reality check for a Laravel product. This is a Symfony Bundle, not a Laravel package. For a Laravel roadmap, the decision is build-vs-buy on a wrapper: the bundle is essentially a service provider plus a binary downloader command. The real asset is the Biome binary; the wrapper is portable in roughly a day, or replaceable by a small Composer script. Do not treat the package as infrastructure you inherit.
  • Use cases where it clearly fits: PHP-primary monorepos where JS is limited to owned assets (Stimulus/UX controllers, Alpine, Turbo), legacy apps where adding Node is operationally or politically hard, and shared base images that must stay PHP-only.

Adoption signals to weigh: 32 stars, 0 dependents, effectively single-maintainer, MIT, last release v2.1.2 (Dec 2025, actively maintained), opportunity score ~40.6 (moderate). Read this as "useful convenience wrapper, low ecosystem validation" — viable for a pilot, not for a platform dependency without a fallback.

What the latest release changes (v2.1.2): nothing decision-relevant, but two mildly positive signals. (1) CI now runs against Symfony 8 stable, so the bundle is tracking the framework's next major rather than lagging — it lowers the "will this be abandoned when we upgrade" risk slightly. (2) A .gitattributes fix is packaging hygiene (smaller/cleaner dist archives), worth noting only because a thin wrapper shipping clean dists is a proxy for maintainer discipline. No new features, no breaking changes, no deprecations. The adoption calculus, the build-vs-buy call, and the port estimate for Laravel are all unchanged.

When to Consider This Package

Adopt when:

  • The application is Symfony 6/7/8 (v2.1.2 adds Symfony 8 to the tested matrix), or you accept a small port to a Laravel service provider + Artisan command.
  • Front-end scope is small-to-medium: TypeScript/JavaScript you own, JSON and CSS configs, no linting requirement tied to bundler plugins.
  • CI/Docker images are PHP-only today, or you want them to be. This is where the ROI is concentrated.
  • You want Biome's version pinned in composer.lock alongside PHP dependencies for reproducibility.
  • The team has reviewed Biome's rule coverage and accepts it for the codebase in question.

Look elsewhere when:

  • You depend on ESLint plugins that Biome doesn't cover (framework-specific rules, custom rules, type-aware linting). Biome's rule set is strong but not 1:1, and type-aware analysis remains limited.
  • Node is already in the pipeline for Vite, Tailwind CLI, or similar. The marginal benefit collapses — just add @biomejs/biome as a devDependency and skip the wrapper entirely.
  • You need Vue/Svelte/Astro SFC support beyond Biome's current capabilities, or strict editor-tooling parity.
  • You require commercial support, SLAs, or a maintained security-response process. A 32-star, zero-dependent, single-maintainer package cannot carry that.
  • Builds are air-gapped or offline. The bundle downloads platform-specific binaries; you'd need to vendor and checksum-verify them. If that overhead exceeds the benefit, commit the binary or bake it into a Docker layer instead.
  • The framework isn't Symfony and the port cost edges past the value of simply writing a short Composer script or CI step.

Gate before adoption: pin both the bundle and the Biome version; audit the downloader (checksum verification, platform/arch detection, cache path, failure behavior); define a one-line fallback (npx @biomejs/biome or a committed binary). Timebox the spike to half a day on a single app. Note that a patch release validating Symfony 8 in CI is not the same as documented support — confirm the composer.json constraint actually permits Symfony 8 before planning an upgrade around it.

How to Pitch It (Stakeholders)

For executives: "This lets our PHP application lint and format front-end code without adding Node.js to our stack. A single Rust binary — fast, one config file — replaces ESLint and Prettier for most of our needs, gets pinned by Composer alongside our PHP dependencies, and removes an entire runtime from our CI images and maintenance surface. Cost is effectively zero and it's MIT-licensed. The risk is that the wrapper is small and lightly adopted, so we pin versions and keep a one-line fallback. The maintainer is still shipping (latest patch added Symfony 8 coverage), which is reassuring but not a substitute for our own fallback. Recommendation: timeboxed pilot on one application, measured on CI build time and image size."

For engineering: "It's a Symfony bundle that downloads the Biome standalone binary and exposes lint/format commands, so the front-end toolchain lives in Composer instead of npm. Biome is Rust-based, typically far faster than ESLint + Prettier on the same repo, and covers JS/TS/JSON/CSS with a single biome.json. Trade-offs: fewer rules than ESLint's plugin ecosystem and no meaningful type-aware linting yet, so audit our rule dependencies first. The package itself is thin — review the downloader's checksum and platform-detection logic before trusting it, and be prepared to fork or inline it if we adopt broadly. v2.1.2 was a maintenance patch (Symfony 8 test matrix, .gitattributes cleanup) — nothing to migrate, nothing breaking, but also nothing that changes our porting math. For Laravel, plan on porting it to a service provider plus an Artisan command in about a day; that port cost is part of the buy-vs-build call."

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource