Ferramentas WordPress modernas: Vite, webpack e a build chain de 2026

Ferramentas WordPress modernas: Vite, webpack e a build chain de 2026

Última verificação: 15 de outubro de 2026
18 min de leitura
Tutorial
Desenvolvedor full-stack

A forma como construímos sites WordPress mudou fundamentalmente. Em 2026, a performance da sua build chain é tão importante quanto a performance do seu site. Se o seu “npm run dev” demora 30 segundos a iniciar, está a perder horas de produtividade todas as semanas. Para programadores WordPress profissionais que trabalham em projetos empresariais, esta ineficiência acumula-se em milhares de euros de produtividade perdida anualmente.

Eis o guia abrangente de 2026 para ferramentas profissionais de WordPress, cobrindo tudo desde build tools até pipelines de deployment.

#Porque usar Vite em vez de webpack no WordPress

O Vite tornou-se o padrão de ouro para o desenvolvimento moderno de WordPress. Embora o Webpack nos tenha servido bem durante uma década, a sua abordagem “primeiro o bundle” é demasiado lenta para projetos Gutenberg modernos e pesados em dados que requerem feedback instantâneo durante o desenvolvimento.

#Tempo de arranque e de recarga no Vite e no webpack

Abordagem do Webpack:

  • Empacota todo o código antes de iniciar o servidor de desenvolvimento
  • Tempo de arranque a frio: 15-45 segundos para projetos grandes
  • Hot reload: 2-5 segundos para alterações
  • Intensivo em memória: Requer frequentemente 4GB+ RAM

Abordagem do Vite:

  • Usa módulos ES nativos no browser durante o desenvolvimento
  • Tempo de arranque a frio: <1 segundo, independentemente do tamanho do projeto
  • Hot Module Replacement: <100ms para a maioria das alterações
  • Uso eficiente de memória: Tipicamente abaixo de 1GB RAM

#Quanto tempo poupa o Vite por dia

Considere um dia típico para um desenvolvedor WordPress:

  • 50 gravações de ficheiros durante o desenvolvimento
  • Fluxo de trabalho Webpack: 50 × 5 segundos = 250 segundos (4+ minutos) perdidos em reloads
  • Fluxo de trabalho Vite: 50 × 0,1 segundos = 5 segundos no total
  • Tempo poupado por dia: 4 minutos. Por ano: 16+ horas

#Configurar o vite para WordPress

O principal desafio com o Vite é integrá-lo com o backend PHP do WordPress. Pequenos plugins como o vite-plugin-wordpress (versão 1.0.4 no npm) tratam da ligação e, segundo o seu readme, fazem menos do que o nome sugere:

  1. Escrevem um ficheiro vite.config.php na pasta de configuração do projeto, com a informação de que o PHP precisa para resolver os caminhos dos ficheiros gerados pelo Vite
  2. Em modo de desenvolvimento, escrevem um ficheiro .dev com o URL do servidor de desenvolvimento do Vite, para o PHP saber se deve carregar do servidor de desenvolvimento ou do build
  3. Opcionalmente, vigiam ficheiros e provocam um recarregamento completo (a opção watch, construída sobre o vite-plugin-live-reload)

Imprimir as tags de script e carregar os ficheiros continua a ser trabalho do seu tema. A secção sobre o manifesto, mais abaixo, trata disso.

// vite.config.js - Configuração WordPress Moderna
import { defineConfig } from 'vite';
import wordpress from 'vite-plugin-wordpress';

export default defineConfig({
  plugins: [
    wordpress({
      watch: true,
      devDir: process.cwd(),
      wordpressConfigDir: 'config'
    })
  ],
  build: {
    outDir: 'dist',
    manifest: true,
    rolldownOptions: {
      input: {
        main: './src/index.js',
        blocks: './src/blocks/index.js'
      }
    }
  }
});

#Quando ainda usar webpack

O Webpack permanece necessário para:

  • Projetos legados que não podem ser migrados imediatamente
  • Requisitos complexos de bundling (code splitting através de múltiplos entry points)
  • Projetos que requerem ecossistemas extensos de plugins
  • Equipas com conhecimento profundo do Webpack e sem tempo para retreino

Para novos projetos em 2026, no entanto, o Vite é quase sempre a melhor escolha.

#Como o @wordpress/scripts faz o build de blocos WordPress com webpack

Antes de passar um plugin de blocos para o Vite, convém saber o que a toolchain oficial já faz, porque é isso que vai substituir. A referência do @wordpress/scripts no developer.wordpress.org descreve o pacote como uma coleção de scripts reutilizáveis para desenvolvimento WordPress, configurada na secção scripts do package.json. Os comandos build e start correm sobre webpack. A versão 36.1.0 foi publicada no npm a 7 de outubro de 2026, por isso trata-se de uma configuração webpack mantida ativamente e não de uma herança antiga.

O wp-scripts build gera um build de produção e o wp-scripts start reconstrói de forma incremental enquanto trabalha. Se não indicar pontos de entrada, a pasta de código (por omissão ./src) é percorrida à procura de ficheiros block.json, e os ficheiros JavaScript indicados nos seus campos de script tornam-se pontos de entrada. Sem nenhum block.json, o ponto de entrada de recurso é src/index.js (ou .jsx, .ts, .tsx), escrito em build/index.js.

As flags que interessam para os temas deste artigo:

FlagO que faz
--hotAtiva o Fast Refresh. Exige SCRIPT_DEBUG ativo no WordPress e o plugin Gutenberg instalado
--experimental-modulesAcrescenta suporte ao campo viewScriptModule no block.json
--blocks-manifestEscreve um ficheiro PHP com os metadados de todos os block.json, para wp_register_block_metadata_collection()
--source-path, --output-pathAlteram a pasta de código e a pasta de saída (build por omissão)

A toolchain oficial já tem, portanto, recarregamento a quente para blocos, com duas condições fáceis de esquecer numa cópia de staging onde o SCRIPT_DEBUG está desligado.

O mesmo pacote cobre o resto da cadeia: lint-js (ESLint com @wordpress/eslint-plugin), lint-style (stylelint com @wordpress/stylelint-config), format, test-unit-js (corre o Vitest instalado no projeto), test-e2e (Playwright), plugin-zip e packages-update. Para alterar a configuração do webpack, cria um webpack.config.js na raiz do projeto, importa a configuração por omissão com require e estende-a com o operador spread, continuando a correr os comandos wp-scripts em vez de chamar o webpack diretamente.

#O que contém o ficheiro index.asset.php

Cada ponto de entrada gerado pela configuração por omissão recebe um ficheiro .asset.php correspondente. Vem do Dependency Extraction Webpack Plugin, que deixa os imports @wordpress/* fora do bundle e os liga ao objeto global wp em tempo de execução: o @wordpress/blocks é lido de wp.blocks e registado com o handle de script wp-blocks. O ficheiro gerado devolve a lista de dependências e uma versão calculada a partir do código-fonte:

<?php return array( 'dependencies' => array( 'react' ), 'version' => 'dd4c2dc50d046ed9d4c063a7ca95702f' );

O seu PHP passa os dois valores diretamente à chamada de enqueue, por isso ninguém mantém a lista de dependências à mão:

$asset = include plugin_dir_path( __FILE__ ) . 'build/index.asset.php';
wp_enqueue_script( 'my-block', plugins_url( 'build/index.js', __FILE__ ), $asset['dependencies'], $asset['version'] );

O Vite não tem equivalente incorporado. Um build Vite que importa @wordpress/element inclui a sua própria cópia, a menos que declare esses pacotes como externos e os ligue aos objetos globais por conta própria. Esse mapeamento é a maior parte do trabalho na migração de um plugin de blocos.

#Como carregar os ficheiros do Vite no PHP do WordPress com o manifesto

O guia de integração de backend do próprio Vite é a referência para qualquer configuração renderizada no servidor, incluindo o WordPress. Tem três partes.

Configuração. Defina o ponto de entrada e ative build.manifest: true. Depois de vite build, o Vite escreve o ficheiro .vite/manifest.json na pasta de saída.

Desenvolvimento. Enquanto o vite corre, o template PHP imprime dois scripts de módulo que apontam para o servidor de desenvolvimento: @vite/client e o seu ficheiro de entrada, por exemplo http://localhost:5173/@vite/client e http://localhost:5173/main.js. Defina server.cors com a origem que abre no browser, ou seja, o URL local do WordPress. Para imagens e fontes referidas no CSS, faça proxy dos pedidos de ficheiros para o Vite ou defina server.origin, para que os URLs gerados apontem para o anfitrião certo.

Produção. O PHP lê o manifesto, um mapa de nomes de chunks para chunks. Para o ponto de entrada usa file (o script a carregar), imprime uma ligação de folha de estilos para cada item em css e segue imports de forma recursiva para juntar o CSS desses chunks e ligações modulepreload opcionais. Se o polyfill de module preload não estiver desativado, o ponto de entrada deve começar com import 'vite/modulepreload-polyfill'.

O Vite gera módulos ES, por isso, do lado do WordPress, a escolha natural é wp_enqueue_script_module(), disponível desde o WordPress 6.5.0, em vez do clássico wp_enqueue_script():

$manifest = json_decode( file_get_contents( get_theme_file_path( 'dist/.vite/manifest.json' ) ), true );
$entry    = $manifest['src/index.js'];
wp_enqueue_script_module( 'theme-main', get_theme_file_uri( 'dist/' . $entry['file'] ) );
foreach ( $entry['css'] ?? array() as $i => $css ) {
	wp_enqueue_style( 'theme-main-' . $i, get_theme_file_uri( 'dist/' . $css ) );
}

O ficheiro .dev escrito pelo vite-plugin-wordpress é o que este PHP pode verificar primeiro: se existir, imprime as duas tags do servidor de desenvolvimento; caso contrário, lê o manifesto.

#Como usar TypeScript em blocos WordPress

Em 2026, JavaScript puro é considerado um risco para projetos empresariais. O TypeScript tornou-se o padrão da indústria, e com boa razão.

#Porque o typescript é importante para WordPress

Prevenção de Erros: O TypeScript deteta erros antes do código ser executado. Considere este erro comum de bloco Gutenberg:

// ❌ Sem TypeScript - Erro de Runtime
attributes: {
  color: 'vermelho' // Programador passa acidentalmente string
}
// Mais tarde no código:
setAttributes({ color: { r: 255, g: 0, b: 0 }}) // Espera objeto, recebe string

// ✅ Com TypeScript - Erro de Compilação
interface ColorAttributes {
  color: string;
}
// TypeScript deteta o desajuste imediatamente

Segurança no Desenvolvimento de Blocos: Como os blocos Gutenberg dependem fortemente de objetos attributes complexos, o TypeScript garante segurança de tipos em:

  • Atributos de blocos
  • Controlos do inspector
  • Renderização server-side
  • Respostas de API

#Configuração typescript para WordPress

// tsconfig.json - Otimizado para WordPress
{
  "compilerOptions": {
    "target": "ES2020",
    "module": "ESNext",
    "lib": ["ES2020", "DOM"],
    "jsx": "react",
    "moduleResolution": "node",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "resolveJsonModule": true,
    "types": ["@wordpress/blocks"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "dist"]
}

#Onde se usa TypeScript em projetos WordPress

Onde o TypeScript aparece mesmo no trabalho com WordPress:

  • código do editor de blocos, onde os formatos dos dados estão documentados e são estáveis
  • tudo o que toca na REST API, onde uma gralha no nome de um campo só se descobre em execução
  • pacotes partilhados dentro de uma agência, onde os tipos são o contrato entre equipas

#Como migrar um projeto WordPress para TypeScript

Para projetos existentes, a migração para TypeScript pode ser gradual:

  1. Começar com novos ficheiros (extensão .ts)
  2. Converter gradualmente ficheiros críticos (blocos, handlers de API)
  3. Usar comentários // @ts-check para ganhos rápidos em ficheiros existentes
  4. Ativar modo strict incrementalmente

#HMR no desenvolvimento de blocos Gutenberg

O HMR é fluido e transformador para a experiência do desenvolvedor.

#Tempo por iteração com e sem HMR

Fluxo de Trabalho Tradicional:

  1. Editar CSS para um bloco Gutenberg
  2. Guardar ficheiro
  3. Esperar pelo build (5 segundos)
  4. Atualizar browser
  5. Navegar para a página (10 segundos)
  6. Abrir editor de blocos
  7. Navegar 10 níveis abaixo para a configuração em que está a trabalhar
  8. Verificar alteração
  9. Repetir para próxima iteração

Tempo total por iteração: 20-30 segundos

Fluxo de Trabalho HMR Moderno:

  1. Editar CSS para um bloco Gutenberg
  2. Guardar ficheiro
  3. Alteração aparece instantaneamente no browser (<100ms)
  4. Nenhuma navegação perdida, nenhuma mudança de contexto

Tempo total por iteração: <1 segundo

#O que o HMR atualiza nos blocos Gutenberg

As ferramentas de build modernas gerem HMR automaticamente para:

  • Alterações CSS (atualizações visuais instantâneas)
  • Alterações JavaScript (preservando estado do componente)
  • Atualizações de componentes React (preservando estado do editor)
  • Alterações de assets (imagens, fontes)

#Vantagens do HMR no desenvolvimento diário de blocos

No trabalho do dia a dia, o HMR nota-se em três pontos:

  • uma iteração acaba com um módulo substituído, não com um recarregamento completo
  • fica no editor em vez de saltar para o browser e voltar
  • o erro aparece enquanto a alteração ainda está na cabeça, não depois de recompilar

#CSS por bloco e theme.json em temas FSE

Os temas Full Site Editing (FSE) requerem uma abordagem fundamentalmente diferente para estilos e gestão de assets.

#Geração de theme.json a partir de design tokens

Em 2026, geramos partes do theme.json dinamicamente a partir de design tokens:

// build-theme-json.js
import designTokens from './figma-tokens.json' with { type: 'json' };

const themeJson = {
  settings: {
    color: {
      palette: designTokens.colors.map(color => ({
        slug: color.name,
        color: color.value,
        name: color.label
      }))
    },
    typography: {
      fontFamilies: designTokens.fonts.map(font => ({
        slug: font.name,
        fontFamily: font.value
      }))
    }
  }
};

// Geração automática de theme.json a partir de tokens do Figma

Esta abordagem garante:

  • Consistência do sistema de design no tema
  • Fonte única de verdade, do Figma ao WordPress
  • Atualizações automáticas quando os design tokens mudam
  • Erros reduzidos de configuração manual

#Como carregar CSS só para os blocos da página

Em 2026, não carregamos um style.css gigante. As build chains modernas:

  1. Analisam o uso de blocos em cada página
  2. Dividem CSS por tipo de bloco
  3. Carregam apenas os estilos necessários para blocos presentes na página
  4. Inlinam CSS crítico para conteúdo acima da dobra

Isto resulta em:

  • a folha de estilos enviada contém apenas as classes que os templates usam de facto
  • First Contentful Paint (FCP) mais rápido
  • Melhores pontuações Core Web Vitals
  • Melhor performance móvel

#Como configurar a divisão de CSS no Vite

// Estratégia moderna de divisão de CSS
export default {
  build: {
    cssCodeSplit: true,
    rolldownOptions: {
      output: {
        assetFileNames: 'assets/[name].[hash][extname]',
        chunkFileNames: 'assets/[name].[hash].js',
        codeSplitting: {
          groups: [
            { name: 'core-blocks', test: /src\/blocks\/core/ },
            { name: 'custom-blocks', test: /src\/blocks\/custom/ },
            { name: 'editor-styles', test: /src\/editor/ }
          ]
        }
      }
    }
  }
}

#Vite vs webpack vs Parcel vs esbuild em 2026

FerramentaVelocidadeComplexidadeIdeal ParaIntegração WordPress
ViteUltra RápidoMédiaTemas FSE / Plugins ModernosExcelente (via plugins)
WebpackLentoAltaProjetos Legados / Bundling ComplexoExcelente (ecossistema maduro)
ParcelRápidoBaixaPlugins Pequenos / SimplesBom (zero-config)
EsbuildExtremoMédiaMinificação Backend de Alta VelocidadeLimitado (apenas build)
TurbopackExtremoBaixaProjetos Next.jsNão disponível

#Quando escolher cada ferramenta

Escolha Vite se:

  • Está a iniciar um novo projeto WordPress
  • Usa JavaScript moderno (módulos ES)
  • Precisa de experiência de desenvolvimento rápida
  • Trabalha com temas FSE ou blocos Gutenberg
  • A equipa valoriza experiência do desenvolvedor

Escolha Webpack se:

  • Está a manter projetos WordPress legados
  • Requer ecossistema extenso de plugins
  • Requisitos complexos de code-splitting
  • A equipa tem conhecimento profundo do Webpack
  • O risco de migração é demasiado alto

Escolha Parcel se:

  • Está a construir plugins WordPress simples
  • Prefere configuração zero
  • Prefere convenção sobre configuração
  • Projetos pequenos a médios

#npm vs yarn vs pnpm para temas WordPress

Em 2026, a escolha do gestor de pacotes tem um impacto significativo na performance do build.

#Tempo de instalação e espaço em disco no npm, yarn e pnpm

Para um tema WordPress típico com 150 dependências:

GestorTempo de InstalaçãoEspaço em DiscoTamanho Node Modules
pnpm8 segundos250 MB280 MB
yarn15 segundos400 MB450 MB
npm20 segundos500 MB550 MB

#Porque o pnpm instala mais rápido e ocupa menos disco

O pnpm usa uma loja content-addressable:

  • Pacotes são armazenados uma vez globalmente
  • Projetos ligam-se à loja global (hard links)
  • o espaço em disco cresce com o número de versões distintas, não com o número de projetos
  • Instalações mais rápidas (sem downloads duplicados)

A documentação do pnpm explica o mecanismo: quando uma dependência é atualizada, só os ficheiros que mudaram entram na loja. Uma nova versão de um pacote com 100 ficheiros em que muda um ficheiro acrescenta, portanto, um ficheiro. Os projetos recebem hard links para a loja em vez de cópias. A mesma página não apresenta medições, por isso leia os tempos de instalação da tabela acima como uma ilustração para um tema, não como uma medição que possa repetir.

# Configuração de projeto WordPress moderno
pnpm create vite@latest meu-tema-wordpress
cd meu-tema-wordpress
pnpm install

#Versões mais recentes do Vite, webpack e @wordpress/scripts em 2026

As versões citadas em artigos sobre ferramentas de build envelhecem depressa. Estas são as versões atuais segundo o registo npm (campo time de cada pacote) a 15 de outubro de 2026:

PacoteVersão mais recentePublicadaVersão principal atual desde
vite8.3.42026-10-088.0.0, 2026-03-12
webpack5.111.12026-09-185.0.0, 2020-10-10
@wordpress/scripts36.1.02026-10-0736.0.0, 2026-09-23
pnpm12.11.22026-10-0912.0.0, 2026-08-26
turbo2.11.82026-10-132.0.0, 2024-06-04
vite-plugin-wordpress1.0.42026-06-09primeira publicação 2025-07-29

Duas destas versões alteram o código deste artigo. O Vite 8 usa Rolldown e Oxc em vez de esbuild e Rollup: build.rollupOptions está obsoleto e passou a chamar-se build.rolldownOptions, a forma de objeto de output.manualChunks deixou de ser suportada e a forma de função está obsoleta a favor da opção codeSplitting do Rolldown. Os exemplos de Vite acima já usam os nomes novos. O Turbo 2.0 mudou o nome da chave pipeline do turbo.json para tasks. A referência de codemods do Turborepo chama-lhe rename-pipeline, aplicado com as restantes alterações da 2.0 através de npx @turbo/codemod migrate.

Já o webpack 5 é a versão principal atual há seis anos. O @wordpress/scripts muda depressa: as versões principais 33 a 36 saíram todas entre julho e setembro de 2026, por isso fixe a versão no package.json e leia o changelog antes de correr packages-update.

#Monorepo WordPress para agências com Turbo

Para agências que gerem 50+ sites WordPress, 2026 é o ano do Monorepo.

#Benefícios da arquitetura monorepo

  1. Biblioteca de Componentes Partilhada: Uma biblioteca “Componentes Core” usada em todos os sites de clientes
  2. Ferramentas Consistentes: Mesmas build tools, linting, testes em todos os projetos
  3. Atualizações Atómicas: Atualizar componente partilhado uma vez, fazer deploy em todos os sites
  4. Builds Paralelos: Turbo ou Nx podem construir/testar múltiplos projetos simultaneamente

#Como configurar o turbo.json para WordPress

// turbo.json
{
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    },
    "test": {
      "dependsOn": ["build"]
    },
    "lint": {}
  }
}

#O que um monorepo muda no dia a dia de uma agência

O que muda no trabalho diário:

  • uma instalação e um lockfile em vez de um por projeto
  • o código partilhado passa para um pacote, por isso uma correção entra uma vez e não em cada repositório
  • um programador novo corre os mesmos comandos em todos os projetos
  • uma atualização de dependências é revista uma vez, num único pull request

#Ferramentas de build WordPress em CI/CD

As ferramentas de build modernas integram-se perfeitamente com serviços profissionais de desenvolvimento WordPress:

  • Pipelines CI/CD: Builds automatizados em cada commit
  • Qualidade de Código: ESLint, Prettier, TypeScript integrados
  • Testes: Jest, Vitest para testes unitários
  • Deployment: Deployment automatizado para staging/produção

Para lojas WooCommerce, as ferramentas modernas permitem:

  • Desenvolvimento mais rápido de fluxos de checkout personalizados
  • Pré-visualização em tempo real de integrações de pagamento
  • Iteração rápida em componentes de exibição de produtos

#Como analisar o tamanho do bundle e o tempo de build

As ferramentas de build modernas oferecem insights de performance integrados:

  • Análise de Bundle: Identificar dependências grandes
  • Rastreamento de Tempo de Build: Monitorizar performance de build ao longo do tempo
  • Otimização de Assets: Minificação automática, tree-shaking
  • Geração de Source Maps: Melhor debugging em produção

Estas ferramentas ajudam a manter performance rápida do WordPress durante todo o ciclo de vida de desenvolvimento.

#Conclusão

As ferramentas que usa definem a qualidade do produto que entrega. Ao adotar Vite, TypeScript e build chains modernas, garante que o seu processo de desenvolvimento é tão rápido e fiável quanto os sites que constrói.

Para programadores WordPress profissionais e agências, ferramentas modernas não são opcionais - são essenciais para permanecer competitivo. Os ganhos de produtividade de builds mais rápidos, melhor segurança de tipos e HMR fluido acumulam-se em valor de negócio significativo.

Ainda está à espera que o Webpack termine? Está na altura de atualizar as suas ferramentas.

Procurando modernizar o seu fluxo de trabalho de desenvolvimento WordPress? Especializo-me em desenvolvimento WordPress personalizado usando os mais recentes padrões de ferramentas de 2026. Posso ajudá-lo a migrar projetos existentes para Vite, configurar TypeScript, ou construir novos projetos com arquitetura moderna desde o início.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Quer implementar isto no seu site?

Se está a planear headless WordPress, desacoplamento de frontend ou migração para Astro, posso desenhar e implementar a arquitetura completa.

Cluster relacionado

Explorar outros serviços WordPress e base de conhecimento

Reforce o seu negócio com suporte técnico profissional em áreas-chave do ecossistema WordPress.

Perguntas frequentes

Respostas práticas para aplicar o tema na execução real.

Porquê mudar de Webpack para Vite#
O Vite usa módulos ES nativos no browser, fazendo com que o servidor de dev inicie quase instantaneamente. O Webpack precisa de empacotar o projeto todo antes de iniciar, o que é muito mais lento em grandes projetos de 2026.
O Vite funciona com temas WordPress#
Sim. A integração de backend do Vite escreve um manifest.json que o PHP do tema lê para carregar os ficheiros gerados, e pequenos plugins como o vite-plugin-wordpress dizem ao PHP se o servidor de desenvolvimento do Vite está a correr.
O TypeScript é necessário para WordPress#
Para equipas profissionais em 2026, sim. Apanha a classe de erros que vem de um formato errado, de uma gralha no nome de um campo ou de uma verificação de null em falta, e torna a refactorização de atributos de blocos muito mais segura.
O que é o HMR#
Hot Module Replacement. É uma funcionalidade onde apenas os módulos alterados são trocados na aplicação em execução sem um recarregamento total, preservando o estado.

Precisa de FAQ adaptado ao setor e mercado? Criamos uma versão alinhada com os seus objetivos de negócio.

Fale connosco

Artigos Relacionados

Voice search nativo para WordPress

Como implementámos pesquisa por voz com privacidade e zero dependências no wppoland.com usando a Web Speech API. Um guia prático para interfaces Ambient AI e porque o nativo vence widgets pesados.