Repolode
dif-sh

dif-sh/dif

Armazene feature flags e testes A/B em arquivos Markdown no repositório e compile-os com uma CLI em um client TypeScript tipado.

Alternativa open source a:LaunchDarklyOptimizely

Estrelas
129
Forks
0
Issues abertas
1
Último commit
há 5 dias

O que é?

O dif armazena cada feature flag e experimento em um único arquivo Markdown com YAML frontmatter, versionado no Git junto ao código que afeta. A CLI `dif` valida esses arquivos (pesos, referências a superfícies, atributos de público e conflitos entre experimentos) e compila os ativos em um client TypeScript tipado e em um arquivo context.json. O SDK de runtime não tem dependências e usa divisão determinística em grupos, para que cada usuário receba a mesma variante em diferentes carregamentos de página e dispositivos, sem banco de dados de atribuições nem chamadas de rede.

O projeto oferece suporte a Next.js, React e SvelteKit, com pacotes npm separados para cada um. Flags e experimentos compartilham o mesmo formato de arquivo: uma flag é um experimento cuja ativação é gradual até chegar a 100%. A CLI inclui comandos para configurar um projeto, criar rascunhos de experimentos, rastrear a atribuição de um usuário com `dif qa` e registrar conclusões que orientam experimentos futuros na mesma superfície.

O uso de analytics é opcional. Sem uma chave publicável, as flags são avaliadas localmente e nenhum dado é enviado. A conexão ao dif.sh Cloud habilita a ingestão de eventos e a análise estatística, enquanto handlers de eventos personalizados podem encaminhar dados para qualquer pipeline. O repositório também inclui skills do Claude Code e arquivos de instruções para agentes, voltados à criação e conclusão de experimentos.

Recursos principais

  • 01Flags e experimentos são arquivos Markdown com frontmatter, revisados em pull requests.
  • 02`dif validate` verifica pesos, referências a superfícies, públicos e conflitos entre experimentos.
  • 03`dif build` gera um client TypeScript tipado e o arquivo context.json.
  • 04A divisão determinística em grupos executa a mesma lógica na CLI em Rust e no SDK TypeScript.
  • 05`dif qa` mostra qual variante um determinado usuário recebe e por quê.
  • 06Conexão opcional ao dif.sh Cloud para ingestão e análise de eventos.

Casos de uso

  • Executar testes A/B em um site Next.js ou SvelteKit sem um dashboard de flags hospedado.
  • Manter o histórico das flags e as conclusões dos experimentos no Git, junto ao código.
  • Permitir que agentes de programação com IA criem e desativem flags editando arquivos no repositório.

Início rápido

  1. 1

    Instale a CLI do dif com npm (requer Node 20 ou posterior).

    npm install -g @dif.sh/cli
  2. 2

    Gere o diretório dif/, a configuração e os arquivos de agente no seu repositório.

    dif init
  3. 3

    Crie um novo arquivo de experiment, abra-o, defina status: active e execute dif build.

    dif new home-hero-cta --surface home
  4. 4

    Compile os experiment ativos no cliente TypeScript tipado.

    dif build

Antes de usar

  • A instalação via npm requer Node 20 ou posterior; também é oferecido um binário independente.
  • O cliente gerado é ignorado pelo gitignore, então o CI e a implantação devem executar dif build antes de compilar o app.
  • Os pacotes npm SDK são apenas ESM e não têm um ponto de entrada require().
  • Cloud analytics é opcional e requer uma publishable key do dif.sh Cloud.

Tópicos

Perguntas frequentes

O que é dif?
Armazene feature flags e testes A/B em arquivos Markdown no repositório e compile-os com uma CLI em um client TypeScript tipado. O dif armazena cada feature flag e experimento em um único arquivo Markdown com YAML frontmatter, versionado no Git junto ao código que afeta. A CLI `dif` valida esses arquivos (pesos, referências a superfícies, atributos de público e conflitos entre experimentos) e compila os ativos em um client TypeScript tipado e em um arquivo context.json. O SDK de runtime não tem dependências e usa divisão determinística em grupos, para que cada usuário receba a mesma variante em diferentes carregamentos de página e dispositivos, sem banco de dados de atribuições nem chamadas de rede.
dif é gratuito? Qual é a licença?
dif é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
dif ainda é mantido?
Manutenção ativa. O último commit de dif foi em 16 de out. de 2026.
Para que posso usar dif?
Executar testes A/B em um site Next.js ou SvelteKit sem um dashboard de flags hospedado. Manter o histórico das flags e as conclusões dos experimentos no Git, junto ao código. Permitir que agentes de programação com IA criem e desativem flags editando arquivos no repositório.
Como instalar dif?
Instale a CLI do dif com npm (requer Node 20 ou posterior).: npm install -g @dif.sh/cli Gere o diretório dif/, a configuração e os arquivos de agente no seu repositório.: dif init Crie um novo arquivo de experiment, abra-o, defina status: active e execute dif build.: dif new home-hero-cta --surface home Compile os experiment ativos no cliente TypeScript tipado.: dif build
Onde consigo dif?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/dif-sh/dif

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados