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

Typeahead Bundle Laravel Package

lifo/typeahead-bundle

Symfony bundle that integrates Twitter Typeahead.js into forms and templates, adding AJAX-powered autocomplete and suggestion fields with minimal configuration. Provides helpers for connecting typeahead inputs to controllers and data sources.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit — poor. This is a Symfony2 bundle, not a Laravel package. It is built around the Symfony Form component (AbstractType, OptionsResolver), Symfony's DI container, and Twig form themes. Laravel has none of these: its form layer is Blade + requests, and its container/service-provider semantics are not bundle-compatible. Nothing in this package can be composer required into a Laravel application and used idiomatically. The realistic fit is zero as a dependency and moderate as a reference design for an autocomplete widget.

What it actually does. It registers a form type that renders a Bootstrap 3 typeahead input backed by a remote JSON endpoint, with options for the data source URL, display/value keys, and minimum query length. That is roughly 100–200 lines of glue between an HTML input, an AJAX endpoint, and a JS library. The value is in the option/API shape, not in any non-obvious engineering.

Integration feasibility — near-blocked.

  • Composer resolution: the package is expected to pin symfony/form to the 2.x line. Modern Laravel (9/10/11) ships Symfony 6/7 components, so dependency resolution will almost certainly fail. Installing it would require --ignore-platform-reqs and a parallel Symfony 2 tree — not a viable production posture.
  • PHP runtime: a 2018-era Symfony2 bundle will not declare PHP 8.x support; platform checks and deprecated syntax (each(), dynamic properties, old DI APIs) are likely friction points. Verify against your target PHP before assuming even a fork is cheap.
  • Front-end: Bootstrap 3 and Twitter's typeahead.js are both end-of-life and jQuery-dependent. Laravel's default front-end (Vite + Tailwind, or Bootstrap 5) has no place for these assets without a parallel legacy CSS/JS island.

Technical risk — high.

  • Symfony 2 and Bootstrap 3 are EOL; typeahead.js is unmaintained, so any XSS or rendering bug in its templating path is yours permanently.
  • 21 stars, 0 dependents, single maintainer, last release December 2018 → effectively no peer review and no security response channel.
  • Suggestion templates are typically rendered as HTML; unescaped remote data is a stored/reflected XSS vector.

Key questions for the requester

  1. What is the underlying need — a single autocomplete field, or a reusable pattern across many forms?
  2. Which front-end is in play: Blade, Livewire, or Inertia with Vue/React? That determines whether a JS library or a server-driven component is the right answer.
  3. Does the data set require server-side search (index-backed) or is a static client-side list sufficient?
  4. Are there accessibility (WCAG/ARIA combobox) or localization requirements the legacy widget cannot meet?
  5. Is there an existing Laravel-native equivalent already in the codebase that was overlooked?

Integration Approach

Stack fit. Treat this as a specification to reimplement, not a component to install. The portable artifacts are the option contract (source URL, displayKey/valueKey, min length, debounce) and the JSON response shape [{value, label}]. Everything else — form type, Twig theme, service wiring — is Symfony-specific and should be discarded.

Recommended target mapping (Laravel):

Bundle concern Laravel equivalent
Symfony form type Blade component / <x-typeahead> or Livewire component
Twig form theme Blade partial + @vite asset entry
Controller JSON action Route + invokable controller returning JsonResponse, or Scout/whereLike query
Bootstrap 3 + typeahead.js Tom Select, Choices.js, or Alpine + fetch (all maintained, accessible)
Symfony DI config Service provider only if you build a shared package

Migration path.

  1. Do not attempt a fork-and-strip. Removing Symfony Form coupling means rewriting the only meaningful code in the repo.
  2. Prototype the widget natively: one Blade component, one JSON endpoint, one JS library. Expect 1–3 developer-days including tests.
  3. If the pattern repeats, extract to an internal composer package (vendor/laravel-typeahead) with a config file and a published Blade view — this is the durable version of what the bundle was trying to be.

Compatibility. Assume no compatibility with your current PHP/Symfony constraints until proven otherwise by reading composer.json; the install attempt is likely to fail outright. Front-end compatibility is the harder blocker: shipping Bootstrap 3 CSS alongside Bootstrap 5 or Tailwind causes selector collisions and unpredictable cascade behavior.

Sequencing.

  1. Confirm the requirement and front-end stack (see questions above).
  2. Spike the native Blade + endpoint + Tom Select implementation in a feature branch.
  3. Accessibility and XSS review of the rendering path (explicit escaping, no innerHTML on remote data).
  4. Decide build-vs-buy before any dependency work — the answer is almost certainly build.
  5. Only if a shared component is justified, formalize it as an internal package with a maintenance owner.

Operational Impact

Maintenance. Upstream is dormant. There is no path to upstream fixes, no release cadence, and no maintainer to escalate to. Adopting it means owning a vendored fork indefinitely, including any jQuery/CSS security findings — a permanent tax for a widget you could own outright in a few days.

Support. No vendor, no SLA, no CVE process, and a single maintainer with a 2018 last release. Internal support falls entirely on the adopting team. For a UI convenience feature, that is a poor risk-to-value trade.

Scaling. The architecture puts load on your application tier: every keystroke beyond the minimum length issues a JSON request. At scale, plan for debounce (200–300 ms), a minimum query length, request cancellation, per-user rate limiting, and an indexed search backend (Scout with Meilisearch/Typesense, or a LIKE-with-index fallback) rather than an unindexed table scan. Caching popular prefixes helps but adds invalidation work. None of this is provided by the bundle — you build it either way.

Failure modes to plan for.

  • Install-time: Composer dependency conflict with Symfony 6/7 components — loud, immediate, and arguably the best outcome.
  • Runtime XSS: remote suggestion data rendered as HTML through an unescaped template.
  • Asset collision: Bootstrap 3 CSS/JS loaded alongside modern framework assets, producing layout regressions that surface far from the change.
  • Silent EOL drift: PHP 8 deprecations and removed functions causing intermittent errors under load rather than at boot.
  • Endpoint abuse: unthrottled autocomplete becoming an accidental DoS vector on your primary database.
  • Bus-factor: zero — one maintainer, no dependents, no community to inherit the code.

Ramp-up. Rebuilding natively is a low ramp for any Laravel developer familiar with Blade and a modern select library (~1 day to first working version, 1–3 days to production quality with tests and a11y). Porting the bundle itself is a high ramp for near-zero payoff — days of Symfony 2 archaeology plus ongoing fork ownership.

Recommendation. Reject as a dependency; score 1.17 is consistent with that. Preserve the option/response contract as a design reference, implement natively in Laravel, and spend the saved effort on the search backend and accessibility.

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.
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
kda/filament-dynamic-navigation
bypersoft/signbox