EmDash: A Cloudflare Quer Matar o WordPress (e Tem Um Bom Motivo)
96% das vulnerabilidades de segurança em sites WordPress vêm de plugins. Não do core, não de temas — de plugins. Eu já perdi a conta de quantas vezes recebi aquele e-mail do Wordfence às 3 da manhã avisando que um plugin obscuro de formulário de contato abriu uma brecha no banco de dados. E se existisse um CMS que simplesmente não permitisse isso?
A Cloudflare acha que tem a resposta. Hoje a empresa lançou o EmDash, um CMS open-source que se posiciona como “o sucessor espiritual do WordPress”. E antes que você pense que é piada de primeiro de abril — sim, eles lançaram no dia 1º de abril, mas o código está no GitHub, a documentação está publicada e já dá pra testar. Cloudflare sendo Cloudflare.
O Problema Que Todo Mundo Conhece (Mas Ninguém Resolve)
Vamos ser diretos: o WordPress domina. 43% da web roda WordPress. É um número absurdo. Mas por trás dessa dominância existe uma arquitetura que foi desenhada em 2003, quando o AWS EC2 nem existia e “deploy” significava subir arquivos via FTP.
O modelo de plugins do WordPress funciona assim: um plugin é um script PHP que se conecta diretamente ao core do WordPress. Sem isolamento. Sem sandbox. Um plugin tem acesso total ao banco de dados, ao filesystem, às variáveis de ambiente — a tudo. Instalar um plugin no WordPress é basicamente dar acesso root a um desconhecido e torcer para ele não fazer besteira.
E os números confirmam o óbvio: em 2025, o ecossistema WordPress registrou mais vulnerabilidades de alta severidade do que nos dois anos anteriores combinados — e ataques à supply chain como o recente hack do Axios no NPM mostram que o problema vai além do WordPress. Não é que os desenvolvedores de plugins sejam incompetentes — é que a arquitetura convida ao desastre.
| Ano | Vulnerabilidades críticas em plugins WP |
|---|---|
| —– | —————————————- |
| 2023 | ~4,500 |
| 2024 | ~5,900 |
| 2025 | ~11,000+ |
Esses números são do WPScan Vulnerability Database e mostram uma curva exponencial. A cada ano, mais plugins, mais brechas, mais dor de cabeça.
EmDash: O Que É e Como Funciona
EmDash é um CMS full-stack escrito inteiramente em TypeScript, construído sobre o Astro 6.0 e projetado para rodar serverless. A ideia central é simples: pegar tudo o que o WordPress faz bem (gestão de conteúdo, temas, plugins, mídia) e reconstruir do zero com segurança como prioridade número um.
Mas aqui está o detalhe que importa: os plugins do EmDash rodam em isolates separados. Cada plugin recebe seu próprio Worker isolate com permissões explicitamente declaradas. Quer que o plugin acesse conteúdo? Ele precisa declarar capabilities: ["read:content"]. Quer enviar e-mail? capabilities: ["email:send"]. Sem declarar, sem acesso.
// Declaração de capabilities de um plugin EmDash
export default {
name: "meu-plugin-newsletter",
version: "1.0.0",
capabilities: [
"read:content",
"email:send"
],
// O plugin NÃO tem acesso ao banco de dados
// NÃO tem acesso ao filesystem
// NÃO tem acesso a variáveis de ambiente
}
Comparando com o equivalente no WordPress:
// Plugin WordPress - acesso TOTAL ao sistema
add_action('init', function() {
global $wpdb; // Acesso direto ao banco
$results = $wpdb->get_results("SELECT * FROM wp_users"); // Qualquer query
file_get_contents('/etc/passwd'); // Acesso ao filesystem
$_ENV['DB_PASSWORD']; // Variáveis de ambiente
// Basicamente, faz o que quiser
});
A diferença é brutal. No WordPress, qualquer plugin pode executar qualquer SQL, ler qualquer arquivo, acessar qualquer variável. No EmDash, o administrador sabe exatamente o que cada plugin pode fazer antes de instalar.
A Stack Técnica Por Trás
O EmDash não é um protótipo de fim de semana. A stack é moderna e opinionada:
| Componente | Tecnologia |
|---|---|
| ———– | ———– |
| Linguagem | TypeScript |
| Framework | Astro 6.0 |
| Runtime | Cloudflare Workers / Node.js |
| Banco de dados | D1 (Cloudflare) ou SQLite |
| Storage | R2 (Cloudflare) ou filesystem local |
| Autenticação | Passkeys (sem senhas!) |
| Formato de conteúdo | Portable Text (JSON estruturado) |
| Licença | MIT |
Dois pontos chamam atenção aqui. Primeiro: Portable Text em vez de HTML. O conteúdo é armazenado como JSON estruturado, o que significa que o mesmo artigo pode ser renderizado como página web, app mobile, e-mail ou resposta de API sem precisar parsear HTML. Quem já tentou extrair texto limpo de um post WordPress cheio de shortcodes sabe a dor que isso resolve.
Segundo: autenticação por Passkeys. Nada de senhas. O EmDash usa WebAuthn por padrão, o que elimina uma categoria inteira de ataques (força bruta, credential stuffing, phishing de senha). Considerando que “admin/admin123” ainda é a combinação mais comum em instalações WordPress comprometidas, isso é um upgrade e tanto.
Migrando do WordPress: Não É Tão Doloroso
A Cloudflare sabe que ninguém vai adotar um CMS novo se a migração for um inferno. Por isso o EmDash oferece três caminhos:
- Importação WXR — Exporta do WordPress (Ferramentas → Exportar) e importa no EmDash. Posts, páginas, mídia e taxonomias são convertidos automaticamente.
- REST API — O EmDash pode puxar conteúdo diretamente da REST API do WordPress. Se você já usa a API (e se está lendo esse blog, provavelmente usa), é plug-and-play.
- Plugin Exportador — Um plugin WordPress dedicado que exporta diretamente para o formato do EmDash, incluindo Custom Post Types que viram “Collections” sem precisar de ACF ou Pods.
# Migração via CLI do EmDash
npx create-emdash@latest my-site
cd my-site
# Importar de um arquivo WXR
npx emdash import --from wordpress --file export.xml
# Ou importar direto da API
npx emdash import --from wordpress --url https://meusite.com.br --auth "user:app_password"
Eu testei a importação WXR com um export de 200 posts e funcionou sem drama. Custom Post Types viraram Collections, categorias viraram taxonomias, mídia foi baixada e re-importada. Não é perfeito — shortcodes ficam como texto puro e precisam de ajuste manual — mas é funcional.
O Elefante na Sala: Vendor Lock-In
Aqui é onde a conversa fica honesta. O grande diferencial do EmDash — plugins em isolates sandboxed — só funciona no runtime da Cloudflare. Se você rodar o EmDash em um servidor Node.js próprio, terá um CMS TypeScript competente, mas sem o modelo de segurança de plugins que é o principal argumento de venda.
A comunidade no Hacker News não deixou isso passar. Como resumiu um comentarista: “a feature headline, isolamento de plugins via Dynamic Workers, só funciona no runtime da Cloudflare. Em qualquer outro host, é só um CMS TypeScript sem o modelo de segurança.”
É a estratégia clássica da Cloudflare: criar software open-source excelente que funciona melhor na infraestrutura deles. Não é lock-in no sentido tradicional — o código é MIT, você pode rodar onde quiser — mas o diferencial competitivo é exclusivo da plataforma. É inteligente. É controverso. E é real.
Para quem já está no ecossistema Cloudflare (Workers, Pages, R2, D1), isso é um não-problema. Para quem roda em VPS próprio ou AWS, é um ponto que exige reflexão.
Funcionalidades Que Importam
Além da segurança, o EmDash traz algumas features que merecem destaque:
Conteúdo Estruturado de Verdade
Nada de WYSIWYG bagunçado. O EmDash usa schemas para definir tipos de conteúdo:
// Schema de um tipo de conteúdo "Receita"
export const recipe = defineCollection({
name: "recipe",
fields: {
title: { type: "string", required: true },
ingredients: { type: "array", of: "string" },
prepTime: { type: "number", label: "Tempo de preparo (min)" },
difficulty: { type: "enum", values: ["fácil", "médio", "difícil"] },
image: { type: "image" }
}
})
Quem já sofreu tentando criar Custom Post Types no WordPress com register_post_type() e add_meta_box() vai chorar de alívio.
IA Nativa
O EmDash já nasce com suporte a agentes de IA:
- Agent Skills — plugins podem expor funcionalidades para agentes de IA
- CLI programática — agentes podem gerenciar conteúdo e schemas via linha de comando
- Servidor MCP embutido — ferramentas como Claude e ChatGPT podem interagir com o site diretamente
Isso não é um “plugin de IA” colado no CMS. É infraestrutura de primeira classe para que agentes possam publicar, editar e gerenciar conteúdo programaticamente. Considerando que metade dos blogs técnicos já usam algum tipo de assistência de IA, faz sentido ter isso nativo.
Monetização com x402
O EmDash inclui suporte nativo ao x402, um padrão aberto de pagamento por acesso. Em vez de paywall com assinatura, o leitor paga por artigo individual. Sem intermediário, sem plugin de membership pesado, sem Stripe SDK.
Eu ainda não sei se isso vai pegar no Brasil — nosso mercado é complicado para micropagamentos — mas a opção existe e é elegante.
WordPress vs EmDash: Comparação Direta
| Critério | WordPress | EmDash |
|---|---|---|
| ——— | ———– | ——– |
| Linguagem | PHP | TypeScript |
| Isolamento de plugins | Nenhum | Sandbox por isolate |
| Autenticação padrão | Senha | Passkeys |
| Formato de conteúdo | HTML | Portable Text (JSON) |
| Hospedagem | Qualquer servidor PHP | Cloudflare Workers ou Node.js |
| Ecossistema de plugins | 60,000+ | ~0 (beta) |
| Temas | 12,000+ | Poucos (baseados em Astro) |
| Performance | Depende de cache | Serverless por padrão |
| Licença | GPL v2 | MIT |
| Curva de aprendizado | Baixa | Média (requer JS/TS) |
| Custo de hospedagem | $5-50/mês | Free tier generoso na Cloudflare |
| Page Builders | Elementor, Divi, etc. | Nenhum (ainda) |
A tabela mostra o dilema: tecnicamente, o EmDash é superior em quase tudo. Mas “ecossistema de plugins: ~0” é um buraco enorme. O WordPress não domina por ser bom (apesar de existirem boas práticas que ajudam) — domina por ter solução pronta para qualquer necessidade. Precisa de e-commerce? WooCommerce. SEO? Yoast. Formulário? Gravity Forms. LMS? LearnDash.
O EmDash precisa construir tudo isso do zero. E não vai ser fácil, mesmo com a Cloudflare por trás.
Quem Deveria Prestar Atenção
Devs que já usam TypeScript e Astro: Vocês são o público-alvo número um. O EmDash vai parecer natural, a DX é excelente e a integração com o ecossistema Cloudflare é seamless.
Blogs técnicos e sites de conteúdo: Se seu site é basicamente texto + código + imagens (como o nosso), o EmDash é mais que suficiente. Não precisa de WooCommerce, não precisa de Elementor, não precisa de 47 plugins.
Quem está cansado de atualizar plugins: Se você gasta mais tempo atualizando plugins do que escrevendo conteúdo, o modelo de segurança do EmDash é libertador.
Quem NÃO deveria migrar agora:
- Sites e-commerce que dependem de WooCommerce
- Qualquer coisa que use page builders (Elementor, Divi, Beaver Builder)
- Sites com mais de 10 plugins essenciais sem equivalente no EmDash
- Equipes não-técnicas que precisam de interface drag-and-drop
O Que Vem Pela Frente
O EmDash está na versão 0.1.0. É um preview. Funciona, mas não está pronto para produção crítica. A Cloudflare está aceitando contribuições no GitHub e o roadmap inclui:
- Marketplace de plugins (com o modelo de segurança como diferencial)
- Mais temas prontos
- Editor visual melhorado
- Integração com mais provedores de hospedagem
A real é que o EmDash não vai “matar” o WordPress. Pelo menos não nos próximos 5 anos. O ecossistema WordPress é grande demais, diverso demais, enraizado demais. Mas o EmDash pode fazer algo mais importante: forçar o WordPress a melhorar. Quando existe uma alternativa credível com segurança de plugins como feature central, a pressão para o WordPress resolver seu próprio problema de segurança aumenta.
E se você é desenvolvedor, vale a pena instalar o EmDash hoje, brincar com ele, entender a arquitetura. Porque se serverless + TypeScript + segurança por design é o futuro dos CMS (e eu acho que é), quem começar a construir plugins e temas agora vai ter vantagem quando o ecossistema crescer.
# Instalar e testar o EmDash em 2 minutos
npm create emdash@latest meu-blog
cd meu-blog
npm run dev
# Acesse http://localhost:4321
O WordPress levou 23 anos para chegar onde está. O EmDash está no dia zero. A questão não é se ele vai substituir o WordPress — é se vai ser bom o suficiente para que você tenha uma escolha real pela primeira vez em duas décadas.
Fonte de inspiração: Introducing EmDash — the spiritual successor to WordPress that solves plugin security (Cloudflare Blog)













