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

Laravel Route List Web Laravel Package

apih/laravel-route-list-web

Adds a browser-based route inspector to Laravel, giving you a searchable, filterable web UI for your app's registered routes—method, URI, name, action, and middleware—so you can debug routing without dropping into the terminal or running artisan route:list.

View on GitHub
Deep Wiki
Context7

Getting Started

Install the package with Composer in the app you want to inspect:

composer require apih/laravel-route-list-web

The package is a route-list UI, so the first thing to do is discover where it mounts and how it is protected. In a fresh install:

  1. Check the package's service provider (usually under vendor/apih/laravel-route-list-web/src/) and look for Route::get(...) / loadRoutesFrom(...) calls — that tells you the URI it registers.
  2. Look for a config file with php artisan vendor:publish --provider="Apih\\RouteListWeb\\..." or simply php artisan vendor:publish --tag=config. Many packages like this ship a config with enabled, path, middleware, and domain keys.
  3. Hit the route in a browser (typically something like /route-list-web or /routes) while running php artisan serve.

Your first real use case is local development orientation: instead of switching to the terminal and grepping php artisan route:list, open a browser tab and filter/search the routes visually while you're already in the app. Treat it as a read-only inspector, not a production feature.

If the package does not ship a config file, the fastest safe path is to wrap or override the registered route with your own middleware, or restrict it via APP_ENV checks in a service provider.

Implementation Patterns

Local-only access via environment gate. The most common pattern is to allow the page only outside production. If the package exposes a config flag, set it in config/route-list-web.php:

// config/route-list-web.php (names may differ — verify after publishing)
return [
    'enabled' => env('APP_ENV') !== 'production',
    'middleware' => ['web'],
];

If no flag exists, register a small service provider that conditionally forgets the package route in production, or applies a gate.

Authorization gate for shared/staging environments. If you want the page on staging for the team, protect it with a gate rather than leaving it open:

// app/Providers/AuthServiceProvider.php
Gate::define('viewRouteList', function (User $user) {
    return $user->isAdmin();
});

Then attach can:viewRouteList to the package route via config or a route group override.

Admin-panel integration. Rather than exposing a top-level URI, many teams mount this behind their existing admin prefix. If the package hardcodes its path, either:

  • proxy it with your own controller that renders the same view, or
  • override the route in a service provider that runs after the package's provider, re-registering the path with your admin middleware group.

This keeps the route list inside the same auth/session/CSRF context as the rest of your back office.

Workflow: route auditing during refactors. When you rename controllers or split modules, keep the route-list page open in one tab and the code in another. The visual grouping (by URI, name, or middleware, depending on the UI) makes it easier to spot orphaned routes, duplicate names, and routes accidentally exposed via api middleware.

Workflow: onboarding and PR review. Point new developers at the web page during setup instead of asking them to run Artisan commands. For PRs that add routes, a screenshot from the route-list page is a lightweight way to show the surface area change.

Pairing with route:list for JSON. The web UI is for humans; keep php artisan route:list --json in scripts and CI. Use the web page for interactive exploration, the CLI for automation — don't try to scrape the HTML view.

Gotchas and Tips

Security is the main risk. A route list leaks controller namespaces, middleware, URI structure, and sometimes route parameters. Never let this page be reachable in production without auth. Verify the effective middleware with php artisan route:list --path=<the-package-path> rather than trusting the README.

Route caching. If you run php artisan route:cache, dynamically registered routes and closures can behave differently. Always clear with php artisan route:clear and re-test the page after adding routes. In deployments where route:cache runs, confirm the package route is still present and still protected.

Route conflicts. If your app already defines a route at the same URI, whichever registers last wins. Check php artisan route:list for duplicates after install, and prefer configuring the package's path over fighting the conflict.

Middleware group mismatch. The page may register under web while your auth guard lives in a custom group. Symptom: you're logged into the app but the route list shows no user or redirects to login. Fix by re-registering the route under the correct middleware group.

Performance with large route tables. Apps with hundreds of routes (especially modular/large monoliths) can render slowly because the view resolves the entire route collection. If it's sluggish, use the package only when needed rather than leaving it in a hot navigation path, and avoid loading it in the same request as heavy pages.

Config publishing is version-sensitive. The config key names and defaults can change between releases (the package was updated in 2026). After composer update, diff your published config against the vendor default and re-read the changelog. Don't assume old keys still apply.

Extension points to inspect first. Before writing workarounds, look for: a config-driven middleware array, a path override, and a publishable view under resources/views/vendor/.... Publishing the view lets you add your own branding or a search box without forking the package.

Debugging a blank page. If the UI renders empty or errors, check (1) the route is actually registered (route:list), (2) the view namespace is registered by the service provider, and (3) the laravel/framework version is within the package's supported range — route listing internals changed across Laravel majors, and a mismatched version often manifests as a missing method on the route collection.

Don't rely on it for access control audits. The page reflects the route table, not your policies or gates. Use it to enumerate routes, then verify authorization separately with tests.

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.
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log
gregsphotography/site-builder-components
io-digital/clickatell
snowsoft/laravel-admin
oxygen/auth
relicsoftware/barakah-payment-gateway
tobya/work-with-composer
equipc/laravel-email-validator