Acessibilidade: VLibras carregado sob demanda
O widget de Libras (terceiros, ~200KB) só é baixado na primeira interação real do usuário. Assim a acessibilidade existe de verdade sem sacrificar o carregamento — e o TypeScript entende os atributos customizados do plugin.
- a11y
- Libras
- Lazy loading
- TypeScript
declare global {
interface Window {
VLibras?: { Widget: new (src: string) => unknown };
}
}
const start = () => {
if (started) return;
started = true;
// Só baixa a biblioteca de Libras na primeira interação real
scriptEl = document.createElement("script");
scriptEl.src = "https://vlibras.gov.br/app/vlibras-plugin.js";
scriptEl.async = true;
scriptEl.addEventListener("load", () => {
if (window.VLibras?.Widget) {
new window.VLibras.Widget("https://vlibras.gov.br/app");
}
});
document.head.appendChild(scriptEl);
};
window.addEventListener("pointerdown", start);
window.addEventListener("scroll", start, { passive: true });
window.addEventListener("keydown", start);


