Salta al contenuto principale

React Feature Flags: guida completa all'implementazione

Scopri come implementare i feature flag in React con la nostra guida completa. Copre pattern architetturali, strategie di rollout, CI/CD e best practice per app moderne.

Illustrazione del blog 'React Feature Flags: A Complete Implementation Guide' Capgo

Hai completato la feature. La pull request è pulita. QA dice che va bene. Eppure non vuoi ancora rilasciarla a tutti in una volta sola.

Quella sensazione è di solito il primo segno che la tua app React ha superato i semplici deploy. Una volta che un prodotto ha utenti reali, un rilascio smette di essere solo un evento tecnico. Diventa una decisione di rischio. Se la nuova UI di ricerca si rompe, se la variante di checkout confonde gli utenti, o se un build mobile viene rilasciato code e non puoi annullarlo rapidamente, hai bisogno di più di if (process.env.NODE_ENV) e speranza.

È qui che feature flags in React cominciano a contare. Non come un semplice booleano in un componente, ma come un livello di controllo del rilascio che ti permette di pubblicare code separatamente dalla sua esposizione. Nelle app web, questo significa rollout più sicuri. Nelle app bundle come Capacitor o Electron, la questione è ancora più critica, perché la velocità di rollback è limitata dalla revisione degli store, dal ritardo nell'installazione e da cicli di rilascio più lenti.

Indice dei contenuti

Perché le feature flag sono essenziali per le app React moderne

Rilascio del venerdì pomeriggio. La nuova UI del riepilogo fatturazione è già deployata, il supporto ha aperto una checklist di lancio e un cliente enterprise ha ancora bisogno del flusso vecchio fino a lunedì. In un'app web, la situazione è già tesa. In un'app React bundle distribuita tramite installer desktop o store mobile, peggiora: il rollback può richiedere ore o giorni invece di minuti.

I feature flag danno ai team React il controllo su quel momento. Permettono di rilasciare il code, tenerlo inattivo e decidere in seguito quali utenti dovrebbero vederlo. Questo trasforma il lavoro di rilascio da un evento tutto-o-niente a un'operazione controllata.

Infografica dal titolo Why Feature Flags Are Essential for Modern React Apps che spiega le strategie di deployment e i vantaggi.

Deployment e release sono attività diverse

Il deployment risponde a: "Il code è in produzione?" Il rilascio risponde a: "Chi può eseguire questo comportamento adesso?"

Questa distinzione diventa cruciale quando un'app React ha traffico reale, più ambienti e funzionalità che impattano su ricavi, permessi o navigazione. I team possono fare merge in anticipo, testare in produzione con coorti interne e allargare l'accesso solo dopo aver verificato il comportamento. Per piattaforme con rilasci più lenti come le app Capacitor, le app Electron e i build mobile sottoposti a revisione degli store, questo controllo è ancora più prezioso perché il binario potrebbe già essere nelle mani degli utenti prima che la funzionalità sia pronta per tutti.

Un flag è utile in tre situazioni che si presentano costantemente:

  • Rollout controllato: esporre un nuovo percorso a un piccolo gruppo per primo
  • Sperimentazione: confrontare varianti senza mantenere deploy separati
  • Disattivazione rapida: disabilitare una funzionalità rischiosa senza aspettare un nuovo build

Una regola semplice funziona bene qui. Se un problema in produzione sarebbe costoso da risolvere, rilascia quel code dietro un flag.

I team nuovi ai flag spesso si fermano alla condizione UI. flag ? <NewUI /> : <OldUI /> è la parte visibile, ma non è quella interessante. Il suo valore principale è operativo. La configurazione remota, il targeting deterministico e la capacità di disattivare rapidamente una funzionalità sono ciò che rende i flag utili in produzione. Se la tua app React ha anche bisogno di impostazioni runtime a livello di app, un plugin di configurazione remota per app Capacitor fits the same release-control model.

Le flag perdono utilità quando nessuno si fida più

Vedo lo stesso pattern di fallimento nei codebase frontend in crescita. Un team aggiunge flag rapidamente, i nomi divergono tra gli ambienti, i valori di fallback nascondono errori di configurazione e nessuno è sicuro se “on” significa on globalmente, on per lo staff o on solo in staging. A quel punto, il sistema di flag inizia a creare rischi invece di ridurli.

Il type safety aiuta, ma non risolve tutto il problema. I team hanno comunque bisogno di un registro chiaro, di ownership e di un modo coerente per valutare i flag in tutta l'app. Altrimenti, i componenti React finiscono per fare assunzioni locali sullo stato del rollout, e queste assunzioni saltano durante i lanci o i rollback parziali.

La differenza è evidente:

Caso d'uso Versione debole Versione robusta
Toggle UI Boolean locale nello stato del componente Flag remoto con ownership e regole di rollout
Sicurezza dei rilasci Rollback manuale del deploy Disattivazione immediata tramite configurazione remota
Sperimentazione Confronto ad hoc tra branch Assegnazione stabile delle coorti e esposizione misurabile

Il cambio di mentalità importante è semplice. Le feature flag di React fanno parte del tuo processo di release, non solo del tuo JSX. Trattale così, soprattutto nelle app dove rilasciare una nuova build è lento, e diventano uno dei pochi strumenti che riducono il blast radius quando la produzione si complica.

Architettura delle feature flag nella tua app React

La decisione architetturale conta più della prima flag. Se colleghi le flag direttamente a componenti a caso, otterrai logica duplicata, flicker durante il caricamento e una codebase in cui nessuno sa a quale fonte di verità affidarsi.

Usa un runtime provider, non condizionali sparsi

Per le app React, l'approccio affidabile è trattare le flag come dati di runtime. Le linee guida per le flag in React raccomandano tre cose: valutare le flag sul server o in una cache locale SDK, persistere l'assegnazione delle coorti in modo deterministico e renderizzare lo stato finale dell'UI prima dell'idratazione o usare una protezione anti-flicker in modo che gli utenti non vedano subito il default sbagliato (Metodologia dei flag in React).

Cambia dove deve risiedere il tuo code. Metti il caricamento dei flag vicino alla root dell'app. Mantieni il consumo semplice. Evita di fetchare i flag nei componenti leaf.

Una struttura pratica è la seguente:

  1. Carica o idrata le flag prima del rendering dell'albero principale.
  2. Esponile tramite un provider.
  3. Leggile tramite un hook o un pattern wrapper.
  4. Tieni la logica di valutazione fuori dai componenti presentazionali.

Se hai bisogno di uno strato di configurazione remota per impostazioni globali e flag, uno strumento come il plugin di remote config di Capacitor si sposa naturalmente con questo pattern nelle app React ibride.

Primo pattern: React Context e un custom hook

Questo è il pattern predefinito che consiglio in genere. È esplicito, testabile e facile da migrare se in futuro cambi vendor.

import React, { createContext, useContext, useMemo } from 'react';

type FlagValue = boolean | 'control' | 'variant-a' | 'variant-b';

type Flags = {
  newCheckout: boolean;
  checkoutExperiment: FlagValue;
  deleteTaskEnabled: boolean;
};

const defaultFlags: Flags = {
  newCheckout: false,
  checkoutExperiment: 'control',
  deleteTaskEnabled: false,
};

const FeatureFlagContext = createContext<Flags>(defaultFlags);

export function FeatureFlagProvider({
  flags,
  children,
}: {
  flags: Flags;
  children: React.ReactNode;
}) {
  const value = useMemo(() => flags, [flags]);
  return (
    <FeatureFlagContext.Provider value={value}>
      {children}
    </FeatureFlagContext.Provider>
  );
}

export function useFeatureFlag<K extends keyof Flags>(key: K): Flags[K] {
  return useContext(FeatureFlagContext)[key];
}

L'utilizzo resta noioso, ed è esattamente ciò che vuoi:

function DeleteTaskButton() {
  const enabled = useFeatureFlag('deleteTaskEnabled');

  if (!enabled) return null;
  return <button>Delete task</button>;
}

Questo pattern funziona bene perché i tuoi componenti chiedono solo una risposta finale. Non importa come quella risposta sia stata calcolata.

Secondo pattern: un higher-order component

Un componente di ordine superiore è utile quando vuoi proteggere un'intera schermata, un elemento di route o un componente di classe legacy senza dover aggiungere chiamate agli hook ovunque.

import React from 'react';
import { useFeatureFlag } from './FeatureFlagProvider';

export function withFeatureFlag<P>(
  flagKey: 'newCheckout' | 'deleteTaskEnabled',
  Fallback?: React.ComponentType<P>
) {
  return function wrap(Component: React.ComponentType<P>) {
    return function FeatureFlaggedComponent(props: P) {
      const enabled = useFeatureFlag(flagKey);

      if (!enabled) {
        return Fallback ? <Fallback {...props} /> : null;
      }

      return <Component {...props} />;
    };
  };
}

Utilizzo:

const CheckoutPage = () => <div>New checkout</div>;
const LegacyCheckoutPage = () => <div>Legacy checkout</div>;

export default withFeatureFlag('newCheckout', LegacyCheckoutPage)(CheckoutPage);

Il lato negativo è l'indirezione. Gli hook sono più facili da tracciare nel React moderno, mentre gli HOC possono rendere gli alberi dei componenti più caotici nei DevTools. Restano comunque puliti per il gating a livello di route.

Non lasciare che i componenti decidano la policy di rollout. I componenti dovrebbero consumare il risultato di un flag, non implementare bucketing, user targeting o regole di refresh della cache.

Confronto dei pattern di feature flag in React

Criterio Context + Hook Higher-Order Component (HOC)
Miglior caso d'uso Decisioni e varianti a livello di componente Involucro per pagine intere, route o componenti legacy
Flessibilità Alta Medio
Esperienza dello sviluppatore Efficace nei componenti funzionali moderni Utile quando gli hook sono scomodi
Chiarezza del bundle Import chiari e letture dirette Più astrazione nell'albero
Test Facile da mockare tramite provider Semplice per i casi di integrazione con wrapper
Manutenibilità a lungo termine Solitamente migliore Va bene se usato con moderazione

Se stai implementando feature flag in React per la prima volta, inizia con Context + Hook. Aggiungi un HOC solo quando hai un'esigenza specifica di gating tramite wrapper.

Implementare strategie di rollout e rollback

Un piano di rollout conta soprattutto il giorno in cui una feature si comporta male dopo il rilascio. La UI magari mostra solo un nuovo pulsante o una schermata, ma il punto è decidere chi la vede per primo, quanto velocemente cresce l'esposizione e quanto rapidamente puoi disattivarla senza aspettare un redeploy. Questo conta ancora di più nelle app React distribuite in bundle mobile o desktop, dove il rollback può dipendere dalla remote config perché la revisione degli store o la distribuzione desktop richiedono tempo.

Un diagramma a imbuto che illustra le strategie di rollout e rollback per le feature flag software, dal rilascio interno a quello globale.

Il rollout percentuale richiede un'assegnazione sticky

Il rollout percentuale funziona solo se l'assegnazione è stabile. Se lo stesso utente vede il nuovo checkout in una visita e quello vecchio in quella successiva, il supporto non riesce a riprodurre i problemi, le analytics diventano confuse e gli utenti perdono fiducia.

La soluzione è semplice. Suddividi gli utenti in bucket usando un hash deterministico di un identificatore stabile più la flag key. Di solito lo User ID è l'input corretto. Per le sessioni anonime puoi usare un installation ID o un device ID, se ne hai uno. Math.random() nel browser è lo strumento sbagliato perché riassegna gli utenti in modo imprevedibile.

Un percorso di rollout pratico è questo:

  • Inizia con utenti interni e QA.
  • Rilascia a una piccola coorte.
  • Espandi gradualmente dopo aver verificato tassi di errore, impatto sulle conversioni e ticket di supporto.
  • Mantieni l'assegnazione sticky per tutta la durata della flag.

Quest'ultimo punto è facile da sottovalutare. Le coorti sticky non servono solo per gli esperimenti. Rendono più veloce la gestione degli incidenti perché gli ingegneri possono rispondere subito a una domanda fondamentale: quali utenti erano esposti?

Se fai esperimenti, calcolane la dimensione prima del rilascio. Un calcolatore di sample size di Optimizely mostra come volume di traffico, conversione di base ed effetto minimo rilevabile influenzino il numero di utenti necessari per variante (Calcolatore di sample size di Optimizely). Senza questo controllo, i team spesso scambiano il rumore per un segnale e promuovono una feature troppo presto.

Un riferimento utile per gli update graduali fuori dal browser è rollout progressivi per gli aggiornamenti live di Capacitor. La stessa disciplina di rilascio vale quando l'app React gira in un shell impacchettato e il rollback del binario è più lento.

Release mirate e basate su ring riducono il blast radius

Alcune funzionalità non dovrebbero partire con una percentuale casuale. I flussi di fatturazione, i prompt di autorizzazione, le migrazioni dei dati e tutto ciò che può bloccare gli utenti richiedono generalmente un rilascio mirato iniziale.

Il targeting funziona bene quando il primo pubblico è definito da caratteristiche note:

  • Personale interno per il dogfooding
  • Beta tester disposti ad accettare imperfezioni
  • Livelli di account specifici
  • Regioni con requisiti legali o linguistici distinti
  • Dispositivi o versioni dell'app che supportano la feature in modo sicuro

Il rilascio basato su anelli rende questo targeting più operativo. L'anello 0 è riservato ai dipendenti. L'anello 1 ai tester esterni fidati. Gli anelli successivi allargano l'esposizione man mano che la fiducia aumenta. Questa struttura aiuta i team a evitare l'errore comune di trattare tutti gli utenti come un unico gruppo quando il rischio è chiaramente disomogeneo.

Ecco la walkthrough integrata che si abbina bene a questo modello di rilascio:

Un kill switch è il flag che si ripaga da solo

Ogni feature rischiosa ha bisogno di un rapido percorso di disattivazione. In pratica, di solito si tratta di un flag operativo di alto livello che disabilita l'intero flusso della feature, non di un flag di presentazione che nasconde solo un punto di ingresso mentre richieste in background, effetti o percorsi di navigazione continuano a girare.

Progetta il kill switch prima del lancio:

  • Valutalo subito all'avvio dell'app.
  • Metti in cache l'ultimo valore sicuro noto.
  • Scegli un default sicuro se il servizio flag non è disponibile.
  • Assicurati che disabilitare la feature fermi gli effetti collaterali, non solo il rendering.
  • Documenta chi può azionarlo durante un incidente.

Per le app solo web, questo riduce il rischio di rilascio. Per le app React per mobile e desktop, può fare la differenza tra un piccolo incidente e giorni di attesa per una build corretta. Se il code è già incluso nel bundle, i flag remoti diventano parte della tua strategia di rollback, non solo di quella di rilascio.

Testare l'osservabilità e gestire il debito dei flag

La parte facile dei feature flag è aggiungerne uno. La parte costosa inizia dopo, quando diventano molti e nessuno ricorda più quali siano ancora rilevanti.

Una moderna sala server con file di rack con luci lampeggianti e cavi di rete organizzati.

Ogni flag moltiplica gli stati di cui devi fidarti

L'avvertimento di Martin Fowler resta valido: una volta introdotti i feature flag, i team devono validare entrambi Su e Off stati, e con più flag le combinazioni possibili crescono in modo combinatorio, aumentando il rischio di regressioni (Martin Fowler sui feature toggle).

Questo ha conseguenze dirette per le app React:

  • I percorsi di rendering condizionale si diffondono rapidamente: Una singola pagina può avere più branch prima che qualcuno se ne accorga.
  • I mismatch di idratazione diventano più facili da innescare: Client e server possono non essere d'accordo se la valutazione avviene al momento sbagliato.
  • I snapshot test da soli diventano meno utili: Un render happy-path non dice molto se lo stato opposto del flag non è testato.

Uno stack di testing pratico è questo:

  1. Esegui unit test sulla logica di valutazione.
  2. Testa con component test i rami chiave flaggati.
  3. Aggiungi copertura end-to-end solo per i percorsi rischiosi.
  4. Verifica esplicitamente i fallback di default.

Non cercare di testare ogni combinazione. Di solito crolla sotto il proprio peso. Testa gli stati che possono danneggiare gli utenti o rompere il layout.

Il debito dei flag è reale e diventa costoso in silenzio

I vecchi flag diventano una forma di degrado da code. Restano in condizionali, commenti, dashboard e runbook. Poi qualcuno modifica il branch “temporaneo” mesi dopo perché nessuno l’ha rimosso.

Le regole di pulizia che funzionano in pratica sono semplici:

Problema Cosa fare
No owner Assegna un team o una persona quando la flag viene creata
Nessuno stato finale Decidi se la flag verrà rimossa, mantenuta o convertita in config
La flag controlla troppo Dividila in flag più piccole e specifiche
Logica core nascosta dietro le flag Sposta le regole di business fuori dai condizionali di render

Regola di pulizia: Ogni flag dovrebbe avere un owner, uno scopo e un piano di rimozione fin dal primo giorno.

È anche qui che i team si scontrano con problemi di “fiducia”. Il nome del flag esiste, ma il fallback è sbagliato. La voce nel dashboard è cambiata, ma il tipo dell’app no. Il percorso code è morto, ma è ancora raggiungibile. Ecco perché la generazione dei tipi e la validazione del registro contano nei sistemi più grandi, anche se l’implementazione iniziale sembrava banale.

L'osservabilità ti dice se la flag ha aiutato o se è solo esistita

Un rollout non è completo perché il flag ha raggiunto l’esposizione totale. È completo quando il team sa cosa è successo.

Monitora almeno queste domande:

  • Esposizione: Quali utenti hanno visto quale variante?
  • Errori: Il percorso con il flag ha causato più errori lato client?
  • Adozione: Gli utenti hanno usato la funzionalità che hai esposto?
  • Segnali di rollback: Quale soglia ti farebbe disattivarlo?

Se la tua piattaforma di flag non risponde a queste domande, continuerai a tirare a indovinare durante le revisioni di release.

Proteggi i tuoi flag e automatizza con la CI/CD

Un deploy errato è evidente. Un cambio di flag errato è più silenzioso e, in certi casi, più pericoloso, perché modifica il comportamento in produzione senza seguire lo stesso percorso di review di code.

Un diagramma che illustra come proteggere i feature flag e automatizzare i workflow tramite processi e strumenti di CI/CD.

Tratta i cambi di flag come cambi in produzione

I feature flag sono controlli di rilascio. Se un team può attivare un flag in produzione, può cambiare ciò che ricevono gli utenti, quali percorsi code vengono eseguiti e, a volte, quali integrazioni si attivano. Questo richiede la stessa disciplina dell'accesso al deploy.

I controlli minimi sono semplici:

  • Accesso basato sui ruoli: Limita chi può modificare i flag in produzione e separa i permessi di sola lettura da quelli di modifica.
  • Audit log: Mantieni un registro chiaro di chi ha cambiato un flag, quando lo ha fatto e su quale ambiente è intervenuto.
  • Isolamento degli ambienti: I flag di staging, preview e produzione devono essere distinti per evitare che i test influenzino il traffico live.
  • Controlli server-side per decisioni sensibili: Un flag client può nascondere l'UI. Non dovrebbe decidere l'accesso alla fatturazione, i diritti o l'autorizzazione.

Un errore comune è trattare la dashboard dei flag come un foglio di calcolo condiviso. Il team prodotto attiva una funzione per un cliente. Il supporto la disattiva per fermare un reclamo. L'ingegneria presume che nessuno ci abbia toccato perché non c'è stato un deploy. Questo setup funziona finché non devi spiegare un incidente.

Le app bundle alzano la posta in gioco. In un'app web, una fix code può uscire rapidamente. In un'app Capacitor o desktop, il code rotto potrebbe già trovarsi sui dispositivi, in attesa che un flag remoto lo esponga. I team che sviluppano app mobile React con Capacitor dovrebbe essere ancora più rigoroso sulle regole di approvazione, perché il rollback spesso significa disabilitare una funzionalità già rilasciata, anziché sostituire il binario.

Inserisci le operazioni sui flag nella pipeline

I flag diventano difficili da fidarsi quando vivono al di fuori del tuo processo di delivery. Il pattern più sicuro è gestirli come parte dello stesso workflow che rilascia la feature.

Di solito significa:

  • Crea o aggiorna i flag nella stessa PR della feature code
  • Valida le definizioni tipizzate dei flag contro il registro remoto durante la CI
  • Promuovi i valori predefiniti per ambiente in modo intenzionale
  • Blocca il rilascio se i flag richiesti mancano o sono configurati male
  • Pianifica task di pulizia per i flag con data di scadenza o rollout concluso

Preferisco una regola semplice: se un incidente in produzione può essere causato da un flag, la CI deve poter intercettare la configurazione prima del rilascio. Questo include default mancanti, chiavi rinominate, mapping degli ambienti obsoleti e flag presenti in code ma non nel control plane.

Se ti serve un punto di partenza per la struttura della pipeline, I workflow CI/CD di GitHub Actions sono un riferimento solido per build check, deployment gate e step di automazione che puoi estendere per la validazione dei flag.

Mantieni semplici e prevedibili segreti e scelte SDK

I team frontend a volte complicano troppo la sicurezza dei flag e trascurano l'ovvio. Le chiavi pubbliche SDK lato client di solito vanno bene se il vendor le ha progettate per l'uso nel browser. Token admin, credenziali di scrittura e chiavi di gestione degli ambienti no. Quelle vanno solo in CI o nei servizi backend.

La distinzione pratica è semplice. Usa l'evaluation lato client per modifiche alla UI ed esperimenti a basso rischio. Usa l'evaluation lato server per prezzi, permessi, kill switch su flussi sensibili e qualsiasi cosa non affideresti al JavaScript locale.

Questo confine conta di più negli ambienti con rilasci più lenti. I team web possono recuperare con un deploy rapido. I team mobile e desktop spesso hanno bisogno che sia il sistema dei flag a fare da meccanismo di recovery. Se le persone sbagliate possono modificare i flag in produzione, o se la CI non valida mai il contratto dei flag, il rollback diventa subito un caos.

Oltre ai web feature flag per Capacitor e app mobile

La maggior parte degli articoli sui react feature flags presuppone un'app web che può essere ridistribuita istantaneamente. Questa assunzione crolla nel momento in cui il tuo React code vive dentro Capacitor, Electron, o un altro runtime bundled.

Le app bundled cambiano la logica di rilascio

Nelle app ibride, spesso si distribuiscono JavaScript, CSS, asset e config all'interno di un bundle che gli utenti non aggiorneranno immediatamente. Una feature potrebbe già essere sul dispositivo prima che tu voglia che qualcuno la usi. Questo cambia completamente il ruolo dei flag.

Una recente discussione sulla strategia di rilascio ibrido ha sottolineato che i contenuti esistenti sui flag React raramente affrontano il modello di rischio di rilascio per Capacitor o app Electron. Per quei team, il bisogno primario è un layer di orchestrazione del rilascio che combini flag, canali mirati e protezione dal rollback, invece di un semplice interruttore on/off, soprattutto quando evitare i ritardi di revisione degli store conta (hybrid app release-risk discussion).

Esatto. Nelle app bundled, i flag contano meno per il rendering condizionale e di più per l' attivazione remota di capacità già distribuite.

In un'app React mobile o desktop, una flag controlla spesso i tempi di rilascio più che la presenza dell'UI.

Ecco perché la distribuzione basata su canali è importante. Se stai sviluppando app ibride e hai bisogno che l'app shell e il modello di rilascio web code funzionino insieme, creare app mobile React con Capacitor è un punto di partenza pratico.

Flags work best when paired with update delivery

Per i team mobile e desktop, le flag da sole non risolvono tutti i problemi di rilascio. Possono nascondere o abilitare percorsi code, ma non possono sostituire la spedizione di asset o logiche corrette quando il bug è già nel bundle.

Ecco perché il modello più robusto è:

  • consegna aggiornamenti code al di fuori dei cicli completi dello store quando la piattaforma lo consente
  • indirizzare quegli aggiornamenti per canale o pubblico,
  • e usare le flag per controllare l'attivazione, il rollback e l'esposizione graduale.

Usate insieme, live updates e flag offrono ai team ibridi un controllo del rilascio più simile a quello web. Questo non elimina la necessità di disciplina. Ti dà semplicemente più di una leva quando qualcosa va storto.


Se il tuo team rilascia app Capacitor o Electron e ha bisogno di quel livello di controllo sui rilasci, Capgo è un'opzione da valutare. Distribuisce bundle web firmati a canali mirati, supporta la protezione dal rollback e l'observability, e si adatta al tipo di workflow di app ibride in cui le feature flag devono lavorare insieme ai live update invece di sostituirli.

Continua la lettura: React Feature Flags: Una guida completa all'implementazione

Se stai usando React Feature Flags: guida completa all'implementazione per pianificare il routing dei canali e il rollout graduale, connettilo a Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Soluzione Beta Testing per il workflow di prodotto nella Soluzione Beta Testing, e Soluzione Version Targeting per il workflow di prodotto nella Soluzione Version Targeting.

Live updates per le app Capacitor

Quando un bug nel web-layer è live, rilascia la fix tramite Capgo invece di aspettare giorni l'approvazione degli store. Gli utenti ricevono l'update in background, mentre le modifiche native restano nel normale processo di review.

Ultimi articoli dal blog

Capgo ti offre gli insight migliori che ti servono per creare un'app mobile davvero professionale.