Por que um teclado de terceiros trava na primeira vez que abre
A extensão é um processo separado que o iOS inicia sob demanda e descarrega quando o teclado some: a primeira aparição da sessão paga uma inicialização que as seguintes não pagam mais.
Você toca num campo de texto, o teclado demora um instante, e depois fica instantâneo o resto do dia. Não é defeito nem é só questão de qualidade de código: é o formato da coisa.
Um teclado é um processo separado
No iOS um teclado de terceiros não é uma visualização dentro do app em que você escreve. É uma extensão: um processo separado, com sua própria caixa isolada, que o sistema inicia quando um campo recebe o foco e encerra quando o teclado fica escondido por um tempo.
Na primeira aparição você paga então uma inicialização completa: carregar, inicializar, montar a interface. Na segunda o processo ainda está vivo e só falta exibi-lo.
Por que é pior depois de reiniciar
Depois de reiniciar o telefone não há nada pré-aquecido: nem caches nem bibliotecas já carregadas. O mesmo efeito ocorre depois de atualizar o app do teclado, porque o sistema precisa reler a extensão.
Também se nota quando há pouca memória. O iOS encerra extensões antes de apps quando precisa de espaço, e o teclado é uma das primeiras coisas a cair. A chamada seguinte é de novo uma inicialização a frio.
O que um teclado pode fazer
- Ser pequeno. Quanto menos carregar na inicialização, mais curta ela é. Bibliotecas de fontes grandes, chamadas de rede no lançamento e frameworks pesados se pagam exatamente aqui.
- Não esperar a rede. Um teclado que quer baixar algo ao iniciar fica preso à conexão. Sem rede, o atraso vira espera.
- Restaurar o estado barato. O visual, o som e os ajustes devem ser lidos como valores pequenos, não recalculados.
O que um teclado **não** pode fazer é permanecer na memória de forma permanente. Isso quem decide é o iOS e nenhum app consegue forçar. Quem promete «nunca mais atraso» promete o que não está na mão dele.
O que você pode fazer
- Abra o app contêiner uma vez depois de instalar e depois de cada atualização. A primeira chamada do teclado costuma ficar mais rápida em seguida.
- Feche apps que ocupam muita memória se o teclado reinicia com frequência.
- Não julgue um teclado pela primeiríssima abertura. A segunda e a terceira mostram como ele é no dia a dia.
A diferença entre um teclado bem e mal construído não está em existir inicialização a frio — sempre existe — mas em quanto ela dura, e em ela durar o mesmo sem conexão.
Perguntas frequentes
É problema do meu telefone?
Só em parte. Aparelhos antigos iniciam processos mais devagar, mas a inicialização a frio existe em qualquer iPhone: é consequência de teclados serem extensões.
Por que fica lento de novo depois de uma atualização?
Porque o sistema precisa reler a extensão. A primeira chamada depois disso é novamente uma inicialização completa.
Adianta remover e adicionar o teclado de novo?
Quase nunca. Isso só redefine o registro e não muda o comportamento de inicialização. Abrir uma vez o app contêiner costuma ajudar mais.
Teste no seu próprio teclado
O Kibo é um teclado personalizado gratuito para iPhone, com sons mecânicos de verdade, temas para escolher e efeitos de luz RGB. Sem conta, sem anúncios e funciona com o Acesso Total desativado.