klepak/nova-dynamic-page-title
A Laravel Nova package for setting dynamic page titles in your admin panel. Customize browser tab and page headings per resource or screen, making navigation clearer and improving context for users across your Nova application.
Install with Composer alongside Nova (the package is a thin Vue/JS layer; there is no PHP API to learn):
composer require klepak/nova-dynamic-page-title
Where to look first: the package's service provider and its compiled JS bundle. Confirm:
vendor/klepak/nova-dynamic-page-title/composer.json for extra.laravel.providers).config/app.php or your NovaServiceProvider::boot().Check composer.lock and the package's composer.json for the laravel/nova version constraint before installing — this package was published in late 2020 and is almost certainly pinned to Nova 2.x/3.x. On Nova 4/5 it will not load.
First use case: verify the title actually changes during SPA navigation. Open Nova, click through Dashboard → a Resource index → a detail page, and watch the browser tab. A hard refresh and an in-app navigation should produce the same title; if only the refresh works, the Vue router hook isn't firing and the asset isn't loaded.
this.$route) in a Nova tool or via the browser console to see what fields the package actually consumes — meta.title, name, or the resource label.$title / label() in the resource class rather than patching the package — the title inherits from Nova's own labelling.NovaServiceProvider::boot() (e.g. Nova::script('title', __DIR__.'/../dist/title.js')), remove it first; two document.title writers will race.Nova::script() for edge cases. For pages the package doesn't cover well (custom Tools, dashboards), register a tiny additional script that sets document.title in a mounted() hook of a wrapper component."{page} — {app}") in one place so dashboards, tools, and resources stay consistent.laravel/nova and the package together, or fork it. Testing on Nova 4+ without a fork is wasted effort.document.title updates after the Vue router resolves. If you're asserting titles in Dusk/Pest browser tests, add a waitFor on the title rather than checking immediately after visit().php artisan nova:publish and your asset build step matter. A stale compiled JS bundle is the usual reason "the title stopped working after deploy."window.Nova is present, confirm the package's JS is in the loaded bundle (view-source: / network tab), and set a breakpoint in the router afterEach hook to see the route being passed to the title logic.How can I help you explore Laravel packages today?