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

List Field Type Laravel Package

visiosoft/list-field_type

Visiosoft list-field_type is a Laravel/PHP field type addon that adds list fields to Visiosoft forms and entries, making it easy to define, store, and display multiple values in a simple ordered list within Streams-based admin interfaces.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — This is not a general-purpose library; it is a Streams Platform field type addon, i.e. a plug-in component that extends the field type registry in visiosoft/streams-platform (the Visio/OpenClassify fork of the PyroCMS Streams ecosystem). It registers a service provider, a field type class, a presenter, validation rules, and an admin view. Its value is entirely conditional on the host application already being a Streams-based CMS (Visio/OpenClassify/PyroCMS lineage). In a vanilla Laravel application there is no integration surface: there is no framework-agnostic cast, validation rule, or Eloquent mutator to lift out, because the class contract is defined by Streams, not Laravel.

Integration feasibility — The package is published to Packagist, so composer require is mechanically possible, but the practical install path is a constraint-resolution exercise. Last release May 2020 implies an expected target of roughly Laravel 5.5–6.x and Streams 1.x. The realistic failure mode at install time is a Composer constraint conflict against a modern host, not a code defect. Because a field type is small (typically one field type class, one presenter, one validation rule, one or two Blade/Vue views), a full source audit is measured in hours, not weeks — which is the main mitigating factor.

Technical risk — High on provenance, moderate on code. One star, zero dependents, and no releases in five-plus years means no community validation, no security disclosure path, and no one to ask when the Streams field type contract shifts. The more substantive risk is data-shape: "list" field types conventionally serialize an array of child values into a single text/JSON column. If that is the case here, you inherit a bespoke serialization format with no upstream migration story, and list values become awkward to query, sort, index, or report on. If the field type instead fans out to related records, the risk profile shifts toward schema coupling and cascade behavior. That distinction should be resolved before any commitment.

Key questions

  • Which exact visiosoft/streams-platform / Laravel versions appear in the composer.json require block, and does the host app satisfy them unmodified?
  • What is the storage format — serialized array in a text column, JSON column, or normalized child records? Is the format stable and documented in code?
  • Is this a fork of a stock PyroCMS/Streams field type, and if so what are the deltas? The diff is the fastest way to size the audit.
  • Are there tests, and does the field type declare validation rules for nested input, or does it accept arbitrary payloads?
  • Does the admin view depend on panel assets (Vue/Blade bundles) that break across Streams admin versions?
  • What is the license, and is there any maintainer commitment or fork path?

Integration Approach

Stack fit — Green light only inside an existing Visio/OpenClassify/PyroCMS-Streams application that needs multi-value or repeater-style fields and is already pinned to a compatible platform generation. Red light for modern Laravel (9–11) applications, headless/API-first services, or any codebase where Streams is not already the content backbone. Do not adopt this to get "a list field" in a normal Laravel app; a JSON column with a cast and a custom validation rule is a smaller, better-owned solution.

Migration path — Treat this as vendored code, not a dependency. Fork or copy into an internal repository (or use a Composer path/VCS repository entry with an exact commit pin) so upstream disappearance or a Packagist metadata change cannot break builds. If the audit shows the field type is a few hundred lines, the cleanest end state is often to re-home the field type class inside your own addon namespace and drop the dependency entirely — you keep the behavior and lose the supply-chain question.

Compatibility — Verify in order: Composer require constraints, service provider and addon manifest registration conventions, the field type base class and presenter interface signatures, and the admin-side view assets. The admin view is the historically brittle layer across Streams panel versions; the PHP side is usually the stable part. Confirm the field type renders and saves in the actual admin panel version you run, not a sibling version.

Sequencing

  1. Spike in a disposable branch of the real host application — never in isolation, since compatibility is defined by the host.
  2. composer require and resolve constraints; capture the exact resolved versions.
  3. Register the addon, create a test stream and a list field.
  4. Exercise full round-trip: create, read, update, delete, and reorder list entries through both the admin UI and the API layer.
  5. Inspect the persisted data shape and decide fork-and-own vs. keep-as-dependency.
  6. Only then build product features on top; do not design user-facing workflows against this field type until step 4 passes.

Operational Impact

Maintenance — Effectively unmaintained upstream. Adoption means ownership transfer: your team becomes the maintainer of record. Expect a one-to-three-day initial audit and fork, then a low, steady trickle of work — primarily re-validating after Streams/Laravel upgrades and after admin panel asset changes. Budget for it explicitly rather than assuming it is free.

Support — No vendor, no release cadence since 2020-05, one star, zero dependents. GitHub issues are unlikely to receive a response. Internal ownership must be named: a specific engineer responsible for the fork, the upgrade path, and the data format. If no one will accept that ownership, do not adopt.

Scaling — The field type itself is thin and adds negligible runtime cost; deserialization is per-record and cheap. The scaling concern is the data model, not the code. If list values are stored serialized in a text column, you lose the ability to index, filter, sort, or aggregate on list contents, and reporting requirements will force either full-table scans in application code or a later normalization project. If you anticipate querying on list values, plan a normalized side table or a JSON column with generated columns from day one rather than retrofitting.

Failure modes

  • Composer constraint drift breaking installs on host upgrades.
  • Admin asset breakage after a Streams panel update, with no upstream fix forthcoming.
  • Silent data corruption if the serialization format is altered or if partial writes leave malformed payloads.
  • Validation gaps allowing unvalidated nested input to reach storage.
  • Field type contract changes in Streams rendering the presenter incompatible.
  • Bus-factor: the single maintainer leaves and no fork exists.

Ramp-up — Low for a Laravel developer already fluent in the Streams addon pattern; the field type's surface area is small and the platform's base classes are the real documentation. Moderate-to-high for anyone unfamiliar with Streams, because public documentation for this specific package appears nonexistent and onboarding means reading the platform's field type base class alongside the addon source. Estimate half a day for a Streams-fluent engineer to be productive, and plan to write an internal README capturing the storage format, registration steps, and upgrade checklist — that document, not the package, is what makes this sustainable.

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.
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
noith/settings
kda/laravel-package