Figma: O Canvas Colaborativo

Como o Figma construiu design multiplayer em tempo real: indicadores de presença, canvas infinito, Dev Mode e design tokens. Com padrões de implementação em CSS e JavaScript.

5 min de leitura 1210 palavras
Figma: O Canvas Colaborativo screenshot

Figma: A Tela Colaborativa

“No jeito Figma, queríamos tornar a IA multiplayer. A colaboração sempre esteve no coração de tudo que fazemos.” — Equipe Figma

O Figma transformou o design de um ofício solitário em um esporte de equipe. Como a primeira ferramenta de design com edição colaborativa em tempo real, o Figma provou que ferramentas criativas complexas podem ser tão fluidas quanto o Google Docs — mantendo a precisão que os designers exigem.


Por Que o Figma Importa

O Figma não apenas adicionou multiplayer às ferramentas de design. Ele reimaginou como o design acontece. Ao construir a colaboração como fundamento, o Figma mudou fluxos de trabalho, dinâmicas de equipe e todo o pipeline de design para desenvolvimento.

Conquistas principais: - Primeira ferramenta de design com edição multiplayer em tempo real - Pioneiro no paradigma de UI de “tela infinita” - Tornou os design systems acessíveis para todas as equipes - Conectou design e desenvolvimento com o Dev Mode - Construiu um império criativo de $20B baseado em colaboração


Principais Aprendizados

  1. Multiplayer requer simplicidade - O Figma construiu uma solução própria mais simples que operational transforms porque sistemas mais simples são mais fáceis de debugar e manter
  2. Tela infinita convida à exploração - Diferente de ferramentas baseadas em páginas, uma tela aberta encoraja iteração e previne restrições artificiais
  3. Interfaces sensíveis ao contexto reduzem carga cognitiva - Barras de ferramentas e painéis que se adaptam à seleção mostram apenas controles relevantes
  4. Design tokens conectam design e código - Variáveis com camadas primitivas → semânticas → de componente criam uma linguagem compartilhada entre designers e desenvolvedores
  5. Dev Mode é um espaço de trabalho dedicado - Separar ferramentas de desenvolvedor das ferramentas de design respeita diferentes modelos mentais e fluxos de trabalho

Princípios Fundamentais de Design

1. Multiplayer como Fundamento

O Figma construiu uma solução multiplayer própria que é mais simples que abordagens tradicionais como operational transforms (OTs). O objetivo era clareza: o sistema não deveria ser mais complexo que o necessário.

A filosofia: Como o Figma não é um editor de texto, eles não precisavam do poder dos OTs e conseguiram usar algo menos complicado. Sistemas mais simples são mais fáceis de entender, implementar, debugar, testar e manter.

Padrões visuais para multiplayer:

INDICADORES DE PRESENÇA:
┌─────────────────────────────────────────────────────────────────┐
│  Canvas                                                          │
│                                                                  │
│  ┌──────────────────────────────────────┐                       │
│  │  Component: Button                    │   (o) Alice          │
│  │  ┌────────────────────┐              │   <- Cursor ao vivo  │
│  │  │  Primary Button    │              │                       │
│  │  └────────────────────┘              │                       │
│  └──────────────────────────────────────┘   (*) Bob             │
│                                              <- Anel de seleção │
│                                                                  │
│  ┌──────────────────────────────────────┐                       │
│  │  Input Field          (+) Carol      │   <- Modo de edição  │
│  │  ┌────────────────────────────────┐  │                       │
│  │  │ |                              │  │                       │
│  │  └────────────────────────────────┘  │                       │
│  └──────────────────────────────────────┘                       │
└─────────────────────────────────────────────────────────────────┘

DESIGN DO CURSOR:
┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│  Anatomia do cursor:                                             │
│                                                                  │
│     ▲                                                            │
│    ╱ ╲                                                           │
│   ╱   ╲ ← Seta (cor do usuário)                                  │
│  ╱_____╲                                                         │
│  ┌─────────┐                                                     │
│  │  Alice  │ ← Etiqueta de nome (aparece ao hover/atividade)    │
│  └─────────┘                                                     │
│                                                                  │
│  Estados:                                                        │
│  • Inativo: Apenas cursor                                        │
│  • Ativo: Cursor + etiqueta de nome                              │
│  • Editando: Cursor + nome + badge "Editando..."                 │
│  • Ausente: Cursor esmaecido (50% opacidade)                     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Princípios de implementação: - Usuários são identificados por cor, não apenas nome - Anéis de seleção mostram quem está trabalhando onde - Movimento do cursor é debounced para performance - Indicadores de presença esmaecem quando usuários ficam inativos


2. A Tela Infinita

A tela do Figma é um ambiente aberto e flexível que possibilita iteração rápida. Diferente de ferramentas baseadas em páginas, a tela infinita convida à exploração.

Padrões de interação na tela:

NAVEGAÇÃO:
┌─────────────────────────────────────────────────────────────────┐
│  Space + arrastar     Navegar pela tela                          │
│  Scroll               Navegar verticalmente                      │
│  Shift + scroll       Navegar horizontalmente                   │
│  Cmd/Ctrl + +/-       Aumentar/diminuir zoom                     │
│  Cmd/Ctrl + 0         Zoom para 100%                             │
│  Cmd/Ctrl + 1         Zoom para caber                            │
│  Cmd/Ctrl + 2         Zoom na seleção                            │
└─────────────────────────────────────────────────────────────────┘

NÍVEIS DE ZOOM COM PROPÓSITO:
┌─────────────────────────────────────────────────────────────────┐
│  100%+     Trabalho em nível de pixel                            │
│  50-100%   Edição de componentes                                 │
│  25-50%    Nível de página/tela                                  │
│  10-25%    Visão geral do fluxo                                  │
│  <10%      Navegação panorâmica                                  │
│                                                                  │
│  UI se adapta por zoom:                                          │
│  • Texto oculto abaixo do limite de legibilidade                 │
│  • Detalhes simplificam à distância                              │
│  • Rótulos de frame sempre visíveis                              │
└─────────────────────────────────────────────────────────────────┘

Padrão de mini-mapa:

/* Mini-mapa de navegação da tela */
.minimap {
  position: fixed;
  bottom: 16px;
  right: 16px;
  width: 200px;
  height: 150px;
  background: rgba(0, 0, 0, 0.8);
  border-radius: 8px;
  overflow: hidden;
}

.minimap-viewport {
  /* Área visível atual */
  border: 2px solid var(--color-primary);
  background: rgba(255, 255, 255, 0.1);
  cursor: grab;
}

.minimap-content {
  /* Renderização simplificada de todos os frames */
  opacity: 0.6;
}

3. Barra de Ferramentas como Central de Comando

A barra de ferramentas do Figma incorpora revelação progressiva: simples à primeira vista, poderosa na exploração.

Arquitetura da barra de ferramentas:

ANATOMIA DA BARRA DE FERRAMENTAS DO FIGMA:
┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│  ┌─────┬─────┬─────┬─────┬─────┬─────────────────┬───────────┐  │
│  │ [=] │ [>] │ [R] │ [O] │ [-] │  T  (H)  [...]  │  Share v  │  │
│  └──┬──┴──┬──┴──┬──┴──┬──┴──┬──┴────────┬────────┴─────┬─────┘  │
│     │     │     │     │     │           │              │        │
│  Menu  Mover  Frame Forma Linha    Texto/Mão/     Colaboração   │
│               tools tools          Comentário                   │
│                                                                  │
│  PADRÃO DE FLYOUT:                                               │
│  ┌─────┐                                                         │
│  │ [R] │ <- Ferramenta primária (clique)                         │
│  └──┬──┘                                                         │
│     │  ┌─────────────────────────┐                               │
│     └──│ [R] Retângulo       R   │ <- Pressão longa revela opções│
│        │ [O] Elipse          O   │                               │
│        │ [^] Polígono            │                               │
│        │ [*] Estrela             │                               │
│        │ [I] Inserir imagem Cmd+K│                               │
│        └─────────────────────────┘                               │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

BARRA DE FERRAMENTAS SENSÍVEL AO CONTEXTO:
A seleção muda as opções da barra dinamicamente:

Sem seleção:          [Mover] [Frame] [Forma] [Caneta] [Texto]
Frame selecionado:    [Mover] [Frame] [Auto layout ▼] [Grid ▼]
Texto selecionado:    [Mover] [Fonte ▼] [Tamanho ▼] [Peso ▼] [Alinhar]
Componente selecionado: [Mover] [Variantes] [Propriedades] [Desanexar]

4. Painel de Propriedades: Inteligência Contextual

O painel direito se adapta completamente baseado na seleção, mostrando apenas controles relevantes.

Arquitetura do painel:

ESTADOS DO PAINEL DE PROPRIEDADES:
┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│  SEM SELEÇÃO:                    FRAME SELECIONADO:              │
│  ┌────────────────────┐         ┌────────────────────┐          │
│  │ Design   Prototype │         │ Design   Prototype │          │
│  ├────────────────────┤         ├────────────────────┤          │
│  │                    │         │ Frame                         │
│  │  Selecione algo    │         │ L: 375   A: 812    │          │
│  │  para ver          │         │ X: 100   Y: 200    │          │
│  │  propriedades      │         ├────────────────────┤          │
│  │                    │         │ Auto Layout        │          │
│  │                    │         │ ═══ ↕ 16  ↔ 24    │          │
│  │                    │         ├────────────────────┤          │
│  │                    │         │ Preenchimento      │          │
│  │                    │         │ ■ #FFFFFF     100% │          │
│  │                    │         ├────────────────────┤          │
│  │                    │         │ Contorno           │          │
│  │                    │         │ + Adicionar contorno│         │
│  │                    │         ├────────────────────┤          │
│  │                    │         │ Efeitos            │          │
│  │                    │         │ + Adicionar efeito │          │
│  └────────────────────┘         └────────────────────┘          │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Padrão de implementação CSS:

/* Painel de propriedades estilo Figma */
.properties-panel {
  width: 240px;
  background: var(--bg-secondary);
  border-left: 1px solid var(--border-subtle);
  display: flex;
  flex-direction: column;
}

.property-section {
  padding: 12px 16px;
  border-bottom: 1px solid var(--border-subtle);
}

.property-section-header {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-secondary);
  margin-bottom: 8px;
}

/* Seções colapsáveis */
.property-section[data-collapsed="true"] .property-section-content {
  display: none;
}

/* Grupos de input inline */
.property-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

.property-label {
  width: 24px;
  font-size: 11px;
  color: var(--text-tertiary);
}

.property-input {
  flex: 1;
  height: 28px;
  padding: 0 8px;
  font-size: 11px;
  background: var(--bg-tertiary);
  border: 1px solid transparent;
  border-radius: 4px;
}

.property-input:focus {
  border-color: var(--color-primary);
  outline: none;
}

5. Variáveis e Design Tokens

Em 2025/2026, as equipes mais progressistas constroem sistemas inteiramente com Figma Variables: decisões de design atômicas que conectam design e código.

Arquitetura de tokens:

ESTRUTURA DE VARIÁVEIS:
┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│  PRIMITIVOS (Valores brutos)                                     │
│  ├── colors/                                                     │
│  │   ├── blue-50:  #EBF5FF                                       │
│  │   ├── blue-100: #D1E9FF                                       │
│  │   ├── blue-500: #2563EB  ← Primário da marca                 │
│  │   └── ...                                                     │
│  ├── spacing/                                                    │
│  │   ├── 4:  4px                                                 │
│  │   ├── 8:  8px                                                 │
│  │   ├── 16: 16px                                                │
│  │   └── ...                                                     │
│  └── radius/                                                     │
│      ├── sm: 4px                                                 │
│      ├── md: 8px                                                 │
│      └── lg: 16px                                                │
│                                                                  │
│  SEMÂNTICO (Significado contextual)                              │
│  ├── surface/                                                    │
│  │   ├── primary:    → colors/white                              │
│  │   ├── secondary:  → colors/gray-50                            │
│  │   └── elevated:   → colors/white                              │
│  ├── text/                                                       │
│  │   ├── primary:    → colors/gray-900                           │
│  │   ├── secondary:  → colors/gray-600                           │
│  │   └── disabled:   → colors/gray-400                           │
│  └── interactive/                                                │
│      ├── default:    → colors/blue-500                           │
│      ├── hover:      → colors/blue-600                           │
│      └── pressed:    → colors/blue-700                           │
│                                                                  │
│  COMPONENTE (Uso específico)                                     │
│  ├── button/                                                     │
│  │   ├── background: → interactive/default                       │
│  │   ├── text:       → colors/white                              │
│  │   └── radius:     → radius/md                                 │
│  └── card/                                                       │
│      ├── background: → surface/elevated                          │
│      ├── padding:    → spacing/16                                │
│      └── radius:     → radius/lg                                 │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

CSS custom properties das variáveis do Figma:

/* Exportado das Figma Variables */
:root {
  /* Primitivos */
  --color-blue-500: #2563EB;
  --color-gray-900: #111827;
  --spacing-16: 16px;
  --radius-md: 8px;

  /* Tokens semânticos */
  --color-interactive-default: var(--color-blue-500);
  --color-text-primary: var(--color-gray-900);

  /* Tokens de componente */
  --button-bg: var(--color-interactive-default);
  --button-radius: var(--radius-md);
  --card-padding: var(--spacing-16);
}

/* Modo escuro via modos de variável */
[data-theme="dark"] {
  --color-text-primary: #F9FAFB;
  --color-surface-primary: #1F2937;
}

6. Dev Mode: Conectando Design e Código

O Dev Mode do Figma é um espaço de trabalho dedicado para desenvolvedores, traduzindo a intenção do design em código pronto para produção.

Fluxo de trabalho do Dev Mode:

FLUXO DESIGN → HANDOFF DE DESENVOLVIMENTO:
┌─────────────────────────────────────────────────────────────────┐
│                                                                  │
│  1. DESIGNER MARCA COMO PRONTO                                   │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  Frame: Tela de Login                   [✓ Pronto para dev] ││
│  │                                                             ││
│  │  Quando marcado como pronto:                                ││
│  │  • Aparece na fila do desenvolvedor                         ││
│  │  • Bloqueado para edições maiores                           ││
│  │  • Rastreamento de mudanças ativado                         ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                  │
│  2. DESENVOLVEDOR INSPECIONA                                     │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  ┌──────────────────┐  ┌──────────────────────────────────┐ ││
│  │  │                  │  │  CSS                              │ ││
│  │  │   [Botão]        │  │  .button {                        │ ││
│  │  │                  │  │    display: flex;                 │ ││
│  │  │                  │  │    padding: 12px 24px;            │ ││
│  │  └──────────────────┘  │    background: var(--primary);    │ ││
│  │                        │    border-radius: 8px;            │ ││
│  │  Selecionado: Botão    │  }                                │ ││
│  │  Componente: ui/Button │                                   │ ││
│  │  Última edição: 2h atrás│  [Copiar] [Mudar para Swift]     │ ││
│  │                        └──────────────────────────────────┘ ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                  │
│  3. COMPARAÇÃO DE MUDANÇAS                                       │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  Mudanças desde a última visualização dev:                  ││
│  │                                                             ││
│  │  - Padding: 16px → 12px                                     ││
│  │  + Border radius: 8px (novo)                                ││
│  │  ~ Color: #2563EB → var(--primary)                          ││
│  └─────────────────────────────────────────────────────────────┘│
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Sistema de Cores

A interface do Figma usa uma paleta neutra e contida que mantém o foco no conteúdo do usuário.

/* Paleta de cores da UI do Figma */
:root {
  /* Superfícies */
  --bg-canvas: #E5E5E5;        /* Fundo da tela */
  --bg-primary: #FFFFFF;        /* Painéis, frames */
  --bg-secondary: #F5F5F5;      /* Painéis secundários */
  --bg-tertiary: #E8E8E8;       /* Inputs, wells */

  /* Texto */
  --text-primary: #000000;
  --text-secondary: #666666;
  --text-tertiary: #999999;

  /* Bordas */
  --border-subtle: rgba(0, 0, 0, 0.1);
  --border-strong: rgba(0, 0, 0, 0.2);

  /* Interativo */
  --color-primary: #0D99FF;     /* Seleção, foco */
  --color-primary-hover: #0085EB;
  --color-success: #14AE5C;
  --color-warning: #FFCD29;
  --color-error: #F24822;

  /* Cores multiplayer (atribuídas aos usuários) */
  --cursor-1: #F24822;  /* Vermelho */
  --cursor-2: #FF7262;  /* Coral */
  --cursor-3: #FFCD29;  /* Amarelo */
  --cursor-4: #14AE5C;  /* Verde */
  --cursor-5: #0D99FF;  /* Azul */
  --cursor-6: #9747FF;  /* Roxo */
  --cursor-7: #FF00FF;  /* Magenta */
}

/* Modo escuro */
[data-theme="dark"] {
  --bg-canvas: #1E1E1E;
  --bg-primary: #2C2C2C;
  --bg-secondary: #383838;
  --bg-tertiary: #444444;

  --text-primary: #FFFFFF;
  --text-secondary: #ABABAB;
  --text-tertiary: #7B7B7B;
}

Tipografia

O Figma usa Inter para sua interface, uma fonte projetada especificamente para telas.

/* Sistema tipográfico do Figma */
:root {
  --font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;

  /* Escala tipográfica */
  --text-xs: 11px;    /* Rótulos, metadados */
  --text-sm: 12px;    /* Corpo, propriedades */
  --text-md: 13px;    /* Títulos */
  --text-lg: 14px;    /* Títulos de seção */

  /* Pesos */
  --font-regular: 400;
  --font-medium: 500;
  --font-semibold: 600;

  /* Alturas de linha */
  --leading-tight: 1.2;
  --leading-normal: 1.4;
  --leading-relaxed: 1.6;
}

/* Aplicação */
.section-header {
  font-size: var(--text-xs);
  font-weight: var(--font-semibold);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-secondary);
}

.property-label {
  font-size: var(--text-xs);
  color: var(--text-tertiary);
}

.layer-name {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
}

Animações e Microinterações

O Figma usa movimento sutil e intencional para fornecer feedback sem distração.

/* Princípios de movimento do Figma */
:root {
  /* Durações */
  --duration-instant: 50ms;   /* Estados de hover */
  --duration-fast: 100ms;     /* Toggles, pequenas mudanças */
  --duration-normal: 200ms;   /* Transições de painel */
  --duration-slow: 300ms;     /* Transições de página */

  /* Easings */
  --ease-out: cubic-bezier(0, 0, 0.2, 1);
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
}

/* Deslize de painel */
.panel {
  transform: translateX(100%);
  transition: transform var(--duration-normal) var(--ease-out);
}

.panel[data-visible="true"] {
  transform: translateX(0);
}

/* Destaque de seleção */
.layer-item[data-selected="true"] {
  background: var(--color-primary);
  transition: background var(--duration-fast) var(--ease-out);
}

/* Fade de presença do cursor */
.remote-cursor {
  transition: opacity var(--duration-slow) var(--ease-out);
}

.remote-cursor[data-idle="true"] {
  opacity: 0.5;
}

Inovações Principais

FigJam: Expandindo a Metáfora da Tela

O FigJam estendeu a tela do Figma para quadro branco, provando que a tela infinita funciona para ideação, não apenas para trabalho com pixels.

Decisões de design: - Paleta de cores quente e lúdica vs. tons neutros do Figma - Sticky notes com física (podem ser “jogados”) - Carimbos e reações para feedback assíncrono - Temporizador e votação para facilitação

Variables: Design Tokens Nativos

Figma Variables tornou os design tokens cidadãos de primeira classe, possibilitando: - Troca de modo (claro/escuro, temas de marca) - Tokens responsivos (valores mobile/desktop) - Variáveis numéricas para lógica de prototipagem

Integração com IA (2025+)

A abordagem de IA do Figma é centrada na colaboração: - Linting com IA para conformidade de tokens - Sugestões preditivas de variáveis - Recomendações de otimização de layout - Exploração de design generativo no Weave


Lições para Implementação

1. Construa para Multiplayer desde o Primeiro Dia

// Arquitetura do sistema de presença
class PresenceManager {
  constructor(roomId) {
    this.users = new Map();
    this.localUser = null;
    this.socket = new WebSocket(`wss://collab.example.com/${roomId}`);

    // Debounce atualizações de cursor
    this.broadcastCursor = debounce((position) => {
      this.socket.send(JSON.stringify({
        type: 'cursor',
        userId: this.localUser.id,
        position,
        timestamp: Date.now()
      }));
    }, 50);
  }

  updateCursor(x, y) {
    this.localUser.cursor = { x, y };
    this.broadcastCursor({ x, y });
  }

  // Esmaecer usuários inativos
  checkIdleUsers() {
    const now = Date.now();
    const IDLE_THRESHOLD = 30000; // 30 segundos

    this.users.forEach(user => {
      user.isIdle = (now - user.lastActivity) > IDLE_THRESHOLD;
    });
  }
}

2. Interfaces Sensíveis ao Contexto

// Conteúdo do painel baseado na seleção
function getPropertiesForSelection(selection) {
  if (selection.length === 0) {
    return { type: 'empty', message: 'Selecione algo para ver propriedades' };
  }

  if (selection.length > 1) {
    return { type: 'mixed', items: selection };
  }

  const item = selection[0];

  switch (item.type) {
    case 'FRAME':
      return {
        type: 'frame',
        sections: ['dimensions', 'autoLayout', 'fill', 'stroke', 'effects']
      };
    case 'TEXT':
      return {
        type: 'text',
        sections: ['font', 'paragraph', 'fill']
      };
    case 'COMPONENT':
      return {
        type: 'component',
        sections: ['properties', 'variants', 'dimensions']
      };
    default:
      return {
        type: 'generic',
        sections: ['dimensions', 'fill', 'stroke']
      };
  }
}

3. Revelação Progressiva nas Barras de Ferramentas

<!-- Ferramenta com variantes flyout -->
<div class="tool-button" data-tool="shape">
  <button class="tool-primary" title="Retângulo (R)">
    <svg><!-- Ícone do retângulo --></svg>
  </button>

  <div class="tool-flyout" hidden>
    <button data-variant="rectangle">
      <svg></svg> Retângulo <kbd>R</kbd>
    </button>
    <button data-variant="ellipse">
      <svg></svg> Elipse <kbd>O</kbd>
    </button>
    <button data-variant="polygon">
      <svg></svg> Polígono
    </button>
    <button data-variant="star">
      <svg></svg> Estrela
    </button>
    <hr>
    <button data-variant="image">
      <svg></svg> Inserir imagem <kbd>Cmd+Shift+K</kbd>
    </button>
  </div>
</div>

<script>
// Pressão longa para revelar flyout
const LONG_PRESS_DURATION = 300;

toolButtons.forEach(btn => {
  let pressTimer;

  btn.addEventListener('pointerdown', () => {
    pressTimer = setTimeout(() => {
      btn.querySelector('.tool-flyout').hidden = false;
    }, LONG_PRESS_DURATION);
  });

  btn.addEventListener('pointerup', () => {
    clearTimeout(pressTimer);
  });
});
</script>


Perguntas Frequentes

Como funciona a tecnologia multiplayer do Figma?

O Figma construiu uma solução própria mais simples que os operational transforms (OTs) tradicionais. Como o Figma lida com objetos em uma tela ao invés de texto em um documento, eles puderam usar um sistema de resolução de conflitos menos complexo. Mudanças sincronizam via conexões WebSocket, com posições de cursor com debounce em intervalos de 50ms para performance. Usuários são identificados por cursores codificados por cor com etiquetas de nome que aparecem na atividade.

Qual a diferença entre Figma e FigJam?

O Figma é uma ferramenta de design de precisão para trabalho de UI/UX com controle em nível de pixel, componentes e auto layout. O FigJam é um quadro branco colaborativo para ideação com uma paleta de cores mais quente, sticky notes com física, carimbos, reações e ferramentas de facilitação como temporizadores e votação. Ambos compartilham o paradigma de tela infinita mas servem propósitos diferentes no processo de design.

Como funcionam as Figma Variables para design systems?

As variáveis seguem uma arquitetura de três camadas: primitivos (valores brutos como blue-500: #2563EB), tokens semânticos (significado contextual como interactive-default → blue-500) e tokens de componente (uso específico como button-background → interactive-default). Essa camada possibilita troca de modo para temas claro/escuro e valores responsivos, mantendo uma única fonte de verdade.

O que é Dev Mode e para quem é?

Dev Mode é um espaço de trabalho dedicado para desenvolvedores que traduz a intenção do design em código pronto para produção. Designers marcam frames como “pronto para dev”, o que os bloqueia de edições maiores e habilita rastreamento de mudanças. Desenvolvedores veem snippets de CSS, Swift ou outro código gerado, referências de componentes e uma visualização de diff mostrando o que mudou desde sua última inspeção.

Por que o Figma usa tela infinita ao invés de páginas?

A tela infinita remove restrições artificiais que ferramentas baseadas em páginas impõem. Designers podem dispor fluxos de usuário inteiros lado a lado, comparar variantes em diferentes níveis de zoom e explorar ideias sem gerenciar navegação de páginas. Níveis de zoom servem propósitos diferentes: 100%+ para trabalho com pixels, 25-50% para revisão em nível de página e abaixo de 10% para navegação panorâmica.


Fontes