Soluzioni

Impresa

Cal.ai

Sviluppatore

Risorse

Prezzo

Come Cal.com ha distribuito un'app iOS/Android utilizzando Expo e Chrome/Firefox usando WXT in un unico codice base

Come Cal.com ha distribuito un'app iOS/Android utilizzando Expo e Chrome/Firefox usando WXT in un unico codice base

Come Cal.com ha distribuito un'app iOS/Android utilizzando Expo e Chrome/Firefox usando WXT in un unico codice base

Scopri come Peer e il team hanno lanciato un'app nativa in meno di 3 settimane.

Un solo codice. Cinque piattaforme. Due app store. Quattro browser.

Consegnato in meno di tre settimane.

Cal.com è sempre stato incentrato sull'incontrare le persone dove già si trovano.

Per la pianificazione, ciò significa ovunque: sul tuo telefono, nel tuo browser, nella scheda che non chiudi mai, sul laptop che usi per lavoro e sul dispositivo che prendi quando stai uscendo.

Molti di voi lo hanno richiesto e finalmente abbiamo deciso di provarci. Questa settimana abbiamo annunciato:

  • Un app iOS nativa

  • Un app Android nativa

  • Un estensione Chrome

  • Un estensione Firefox

  • Un estensione Safari

  • Un estensione Edge

E non l'abbiamo fatto in mesi o trimestri.

Abbiamo spedito tutto questo in meno di tre settimane dalla concezione alla produzione.

Tutto senza separare il prodotto in una dozzina di repository che lentamente divergevano nel tempo.

L'abbiamo fatto con un solo codice.

L'idea di base: spedire Cal.com ovunque senza spedire Cal.com cinque volte

Storicamente, “app mobile” e “estensione del browser” vivono in universi diversi.

  • I dispositivi mobili vogliono React Native, strumenti di build nativi, flussi di lavoro del app store, notifiche push, deep linking, ecc.

  • Le estensioni vogliono script di contenuto, worker di background/servizio, autorizzazioni, API di storage, peculiarità del browser e il gioco infinito del “funziona in Chrome ma…”

L'approccio usuale è accettare la divisione:

  • squadre separate

  • stack separati

  • processi di rilascio separati

  • bug separati

  • incoerenze dell'interfaccia utente separate

Questo non sembrava il modo Cal.com.

Volevamo che Cal sembrasse lo stesso prodotto ovunque. Stessa UI. Stesso modello mentale. Stesse funzionalità. Stessa velocità di iterazione.

Quindi l'abbiamo costruito in quel modo.

iOS + Android: alimentato dal più recente Expo e React Native

Le nostre app iOS e Android sono alimentate da il più recente Expo (expo.dev) e React Native (RN).

Expo ha raggiunto un punto in cui ottieni il meglio di entrambi i mondi:

  • eccellente esperienza per gli sviluppatori

  • seria prontezza alla produzione

  • flessibilità quando hai bisogno di andare nativo

La cosa più importante è che Expo si adatta a una tesi più grande a cui teniamo profondamente:

Web e nativo non dovrebbero sembrare prodotti separati.

Dovrebbero sembrare diverse superfici dello stesso sistema.

Estensioni: alimentate da WXT

Per le estensioni del browser, abbiamo costruito su wxt.dev.

Le estensioni sono ancora una di quelle aree in cui gli strumenti possono sembrare stranamente bloccati nel passato. WXT lo fa sembrare moderno:

  • struttura pulita

  • predefiniti sani

  • build multi-browser affidabili

E sì, abbiamo costruito per Chrome, Firefox, Safari e Edge.

Safari da solo è di solito sufficiente per spaventare le squadre dal supporto multi-browser. Ma l'obiettivo non è mai stato “Chrome ora, altri più tardi.”

L'obiettivo era Cal ovunque.

La parte divertente: UI dell'estensione Chrome alimentata da Expo Web

Ecco la parte che sembra ancora leggermente surreale:

La nostra UI dell'estensione Chrome è alimentata da Expo Web.

Ciò significa che la UI dell'estensione non è un frontend separato con il proprio sistema di componenti e deriva stilistica. È costruita utilizzando lo stesso approccio UI che già usiamo per i dispositivi mobili che esegue sul web all'interno della superficie dell'estensione.

Quindi quando dico un solo codice, lo intendo in un modo che conta veramente:

  • schermate condivise

  • componenti condivisi

  • primitivi di design condivisi

  • logica condivisa

  • velocità condivisa

L'app WXT stessa gira all'interno di /extension/entrypoints/content.ts che poi carica l'app expo-web come un iframe. Questo è l'approccio più comune per costruire estensioni

Inizia subito gratuitamente con Cal.com!

Sperimenta una programmazione e produttività senza interruzioni senza spese nascoste. Iscriviti in pochi secondi e inizia a semplificare la tua programmazione oggi, senza bisogno di carta di credito!