Best Practiceswarn by defaultstrict preset
astro-doctor/require-client-router-script-lifecyclerequire-client-router-script-lifecycle
Initialize scripts on astro:page-load when using ClientRouter.
Why
ClientRouter navigation swaps page content without reloading the document, so DOMContentLoaded only initializes the first page. Astro emits astro:page-load after the initial load and every client-side navigation.
Examples
Incorrect
Only initializes after the first document load
<script>
document.addEventListener('DOMContentLoaded', initialize)
</script>Correct
Initializes after every routed page load
<script>
document.addEventListener('astro:page-load', initialize)
</script>Configuration
Project audits are configured in doctor.config.ts:
export default {
rules: {
'astro-doctor/require-client-router-script-lifecycle': 'error', // or 'warn' or 'off'
},
}All rules
astro-doctor/no-client-load-overuseastro-doctor/use-astro-imageastro-doctor/require-image-dimensionsastro-doctor/no-missing-altastro-doctor/no-set-htmlastro-doctor/no-public-secret-envastro-doctor/prefer-class-listastro-doctor/no-blocking-scriptastro-doctor/no-unprocessed-script-surprisesastro-doctor/no-missing-langastro-doctor/require-island-fallbackastro-doctor/no-process-envastro-doctor/prefer-content-collectionsastro-doctor/no-disabled-origin-checkastro-doctor/no-insecure-session-cookieastro-doctor/no-open-allowed-domainsastro-doctor/prefer-env-schemaastro-doctor/prefer-pnpmastro-doctor/require-action-input-schemaastro-doctor/require-client-router-script-lifecycle(this page)astro-doctor/require-content-config