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

Filament Link Picker Laravel Package

codedor/filament-link-picker

A Filament form field that lets editors choose links without hand-typing URLs. It provides a searchable picker for internal pages, model records, and custom routes, with configurable sources and labels. Use it for navigation, buttons, and CTA fields to keep links consistent in Laravel admin panels.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit: wotzebra/filament-link-picker is a Filament form-field plugin — a UI component for selecting internal routes/models or external URLs inside a Filament panel resource form. It sits entirely in the admin/authoring layer and persists as a serialized Link value object (route name, parameters, anchor, external URL, target). It does not touch the public request path, routing, or rendering pipeline, so architectural coupling is limited to the Filament panel and the column type used to store the link payload.

Integration feasibility: Low. composer require wotzebra/filament-link-picker, register the field in a resource schema, add a json/text column (or reuse an existing one), and provide a front-end resolver that turns the stored payload into a URL. No service provider gymnastics, no queue workers, no infrastructure change. Realistic effort: under a day for a first field, plus a small Blade/helper for rendering.

Technical risk:

  • Single-maintainer, low-traffic package. Bus factor is the dominant risk, not code complexity.
  • Filament major-version coupling. Filament v4 introduced breaking changes to form-field APIs; the release notes do not state which Filament majors v2.2.0 supports. This is the gating question for any upgrade planning.
  • Behavior change in v2.2.0. defaultNewTab is added to Link and enabled by default for external links. Even as a minor release, this changes rendered anchor markup (target="_blank") for external links. If the property is only applied at authoring time, existing records are unaffected; if it is applied at render/resolve time, existing content silently starts opening in new tabs.
  • Anchor fix (PR #34). "Anchor tags not showing up in the route" implies fragments (#section) were being dropped when composing the URL. Worth confirming whether this is render-time only or whether it also changes the persisted payload shape — the latter would need a data check on existing rows.
  • Dependabot noise. The two dependency bumps are CI hygiene (actions/checkout 6→7, fetch-metadata 3.0→3.1) and indicate automated dependency management is on — a mild positive maintenance signal, but it also means the release is mostly housekeeping with two functional changes buried in it.

Key questions for the maintainer/repo:

  1. Supported Filament majors and PHP/Laravel version matrix?
  2. Does defaultNewTab affect existing persisted Link records, or only newly authored links? Is it configurable globally?
  3. What is the serialization format of Link, and is the new property nullable/defaulted on deserialization of older payloads?
  4. Is the anchor fix accompanied by a migration or is it purely render-time?
  5. Is rel="noopener noreferrer" emitted alongside target="_blank"?
  6. Test coverage and CI status for v2.2.0; license terms.

Integration Approach

Stack fit: Standard Laravel + Filament (TALL) admin panel. Composer-only dependency, no Node build step beyond Filament's existing asset pipeline, no database engine requirements. Fits any Laravel app already running Filament; a poor fit for apps without Filament, or for headless/API-only content authoring.

Migration path:

  1. Pin to ^2.2 in composer.json and upgrade in a branch; run the existing test suite plus a Filament panel smoke test.
  2. Diff the persisted Link payload before/after: create a record on v2.1.0, load and re-save it on v2.2.0, and confirm the JSON round-trips without losing or mutating fields.
  3. Audit existing rows containing external links to determine whether their rendered target changes.
  4. Verify anchor/fragment links that were previously broken now resolve correctly — and check for any records where the fragment was manually appended to a URL string and would now be duplicated.
  5. Roll forward only; the addition is additive so rollback to 2.1.0 should be safe provided the new property is ignored on downgrade.

Compatibility: Minor version bump, expected to be backward compatible at the API level. The compatibility surface to actually test is (a) Filament major version, (b) the Link value-object shape in stored JSON, and (c) front-end rendering code that reads the payload. Anything consuming the stored JSON directly — custom accessors, API resources, search indexes — should be re-checked.

Sequencing: Upgrade in local → CI green → staging with a copy of production data → content-team UAT on the new-tab default and on previously broken anchor links → production. Ship it as a normal dependency bump, not a scheduled change; no downtime, no migration required unless the anchor fix proves to need a backfill.

Operational Impact

Maintenance: Low ongoing effort, but treat the package as a pinned dependency rather than a floating one. Budget a recurring review each time Filament ships a major, since that is when this package is most likely to lag or break. The active Dependabot setup is a good sign for supply-chain hygiene; keep your own lockfile updates flowing.

Support: Community-supported with a small contributor base — assume no SLA. Mitigate by keeping the integration surface thin: a single form field plus one URL-resolution helper. If the package goes stale, replacing it with a stock Filament field (route select + URL input + a fragment field) is a contained piece of work, roughly a day, because nothing outside the admin form depends on it.

Scaling: Negligible. All work happens in the admin panel at authoring time; the public site only reads a stored string. No effect on request throughput, query counts, or queue depth. The only scale-adjacent concern is the storage column format — JSON blobs are fine to read but awkward to query or index, so avoid needing to filter content by link target.

Failure modes to watch:

  • Filament major upgrade breaks field registration → admin form errors; caught by smoke tests, not by the public site.
  • Link payload drift on deserialization → older records render blank or throw in the resolver; caught by loading legacy rows in staging.
  • New-tab default applied at render time → silent UX/analytics change for external links; caught only by content QA.
  • Fragment duplication when the anchor fix interacts with hand-edited URLs → malformed links with #a#a.
  • target="_blank" without rel="noopener" → minor security/performance issue on outbound links; verify in rendered HTML.
  • Abandonment → no security patches; mitigated by the thin integration surface and dependency scanning.

Ramp-up: A Laravel developer familiar with Filament is productive in a few hours; document the stored payload shape and the resolver helper so future maintainers do not have to read the package source. Content editors need a short note on the two changes that affect them: external links now default to opening in a new tab, and anchor/fragment links that previously lost their #section now work — worth a pass over existing link-heavy pages.

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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect