- How do I install Shape in a Laravel application?
- Installation is composer require onelegstudios/shape followed by a single artisan command; there is no config publishing, no asset pipeline, and no JavaScript build step. The package requires PHP 8.3 to 8.5 and Laravel 12 to 13. Because it is a view-layer dependency, it inherits Laravel's escaping and localization and adds essentially no service-provider surface to reason about.
- Which Laravel and PHP versions does Shape support?
- Shape targets Laravel 12 through 13 and PHP 8.3 through 8.5, and is tested on Ubuntu and Windows against both prefer-stable and prefer-lowest dependency resolutions. The support window is narrow but current, so a Laravel 10 or 11 application cannot evaluate the package without upgrading the framework first.
- Does Shape require Livewire to work?
- No. Shape components are anonymous Blade files, and the one bundled script imports nothing and depends on neither Alpine nor Livewire. Shape::toast() and Shape::confirm() dispatch through Livewire when there is a Livewire request to ride on, and flash to the session otherwise, arriving as the same event so a single code path renders the notification either way. That means you can pilot the library in a non-Livewire corner of an application without maintaining a second implementation.
- Do I need to add Shape's views to my Tailwind content globs?
- Yes. Even though Shape ships Tailwind utility classes with no compiled CSS, Tailwind must still be able to scan vendor/onelegstudios/shape/resources/views or it will purge the classes it never sees. Add that path to your Tailwind content configuration before expecting the components to render correctly. The package documentation does not state a Tailwind version floor, so confirm compatibility with your installed major.
- What is Blaze and is it required to use Shape?
- Blaze is an optional compile-time optimiser that folds annotated components into their parent templates, eliminating runtime component instantiation. At version 0.1.0 the annotations are present but Blaze itself is optional, and components render normally without it. The intended sequencing is to adopt the component library first and enable folding later, once you have evidence it is worth the trade-off.
- Can Blaze component folding leak data between users?
- Yes, and this is the main hazard of folding. A folded component is pre-rendered while Blade compiles, so calls to auth(), session(), config(), or a translation inside it are resolved once and then served to every visitor, producing a cross-user data leak with no stack trace and no visible symptom in development. Keep user-specific logic out of foldable components and treat folding as an opt-in per component rather than a blanket setting.
- What does the shape:doctor command check?
- shape:doctor inspects components for patterns that are unsafe to fold, and exits non-zero when it finds them, which lets it act as a CI gate. The package is unusually candid about the folding risk, but the mitigation only works if the command is actually wired into your pipeline. Treat that CI wiring as an operational commitment rather than a feature you get for free.
- How does shape:eject work and what do I take on by using it?
- shape:eject copies a component and its full dependency graph into your application, recording what the package contained at copy time so shape:eject:status can later distinguish your local edits from upstream movement. The tooling is good, but once a component is ejected it is your code with your maintenance burden. Eject selectively rather than wholesale, and check the licence terms before redistributing copied files.
- What browser support and accessibility level does Shape target?
- Shape delegates overlays to the platform: modal and drawer use the native dialog element, while dropdown, popover, and tooltip use the popover attribute, so focus trapping, top layer, Escape handling, light dismiss, and the scrim come from the browser rather than from package JavaScript. No formal conformance target such as WCAG 2.2 AA is documented; the 96-seed contrast verification is the main evidence gathered so far. A minimum browser floor for dialog and popover is not stated, so verify behaviour if you must support older Safari or older Chromium builds.
- Is Shape stable enough to use in production?
- Shape is at 0.x and explicitly warns that component APIs may change before 1.0, so avoid building a large surface against its props. It is maintained by a single studio with no SLA and no stated deprecation policy, which makes issue response time hard to predict. The reasonable approach is to pilot it in a contained area, keep customisations thin, and wire shape:doctor into CI before enabling Blaze folding anywhere user-specific data is involved.