Um arquivo, uma tag <script>, e sua página passa a ser reativa. Proxy recursivo, dependency tracking granular, ~3.6KB gzip. Funciona em qualquer stack.
Cada exemplo abaixo está rodando de verdade com shadow-proxy.js. Edite, clique, experimente.
<div x-data="produto"> <h2 x-bind="{nome}"></h2> <p x-bind="R$ {preco}"></p> <div x-if="ativo">✅ Disponível</div> <div x-if="!ativo">❌ Indisponível</div> </div> <input x-model="produto.nome"> <script> proxy.initProxy(); proxy.template.produto.nome = "Coxinha Supreme"; proxy.template.produto.preco = 9.90; proxy.template.produto.ativo = true; </script>
<div x-data="tarefas"> <div x-for="item, k in lista"> <span x-bind="{item.texto}"></span> <button x-on:click="toggle(k)">✓</button> <button x-on:click="remove(k)">✕</button> </div> </div> <script> proxy.initProxy(); proxy.template.tarefas.lista = [ { texto: "Aprender shadow-proxy", done: false }, { texto: "Refatorar o projeto", done: false }, ]; proxy.template.tarefas.toggle = function(k) { proxy.template.tarefas.lista[k].done = !proxy.template.tarefas.lista[k].done; }; </script>
<div x-data="contador"> <h2 x-bind="{valor}"></h2> </div> <input type="range" x-model="contador.valor"> <script> proxy.initProxy(); proxy.template.contador.valor = 50; // Observa qualquer mudança no valor proxy.on('contador.valor', (novo, velho) => { console.log(`${velho} → ${novo}`); }); </script>
shadow-proxy.js entrega reatividade real sem as abstrações desnecessárias dos grandes frameworks.
lista[250].nome = 'x' toca exatamente 1 nó
no DOM, independente do tamanho da lista.Existe um espaço enorme entre "página HTML com PHP" e "SPA completa com React". shadow-proxy.js ocupa exatamente esse espaço.
| Característica | ShadowProxy | Alpine.js | Vue.js (CDN) | React (CDN) |
|---|---|---|---|---|
| Tamanho (min+gzip) | ~3.6KB | ~13.5KB | ~34KB | ~45KB |
| Build tools | ✕ Não precisa | ✕ | ✕ | ✕ |
| Dependências | ✓ Zero | ✓ Zero | ✓ Zero | ✓ Zero |
| Curva de aprendizado | 15 minutos | 1 hora | 2 dias | 1 semana |
| Two-way binding | ✓ | ✓ | ✓ | ✕ |
| Error handler customizável | ✓ | ✕ | ✕ | ✕ |
| Destroy real (SPA/fetch) | ✓ | ⚠ | ⚠ | ✓ |
| Funciona em PHP puro | ✓ | ✓ | ⚠ | ✕ |
Um arquivo. Sem npm, sem config, sem opinião sobre sua stack.
x-data no HTML e chame proxy.initProxy(). Sua página já é
reativa.