En este tutorial, comenzaremos con una nueva aplicación de React y transitaremos a un desarrollo móvil nativo utilizando __CAPGO_KEEP_0__. De manera opcional, también puedes agregar app and transition to native mobile development using Capacitor. Optionally, you can also add para una interfaz de usuario móvil mejorada con Tailwind CSS. Building Mobile Apps with React and __CAPGO_KEEP_0__
Capacitor te permite convertir fácilmente tu aplicación web de React en una aplicación móvil nativa sin modificaciones significativas o aprender una nueva habilidad como React Native.
Con solo unos pocos pasos simples, la mayoría de las aplicaciones de React pueden ser transformadas en aplicaciones móviles.
Este tutorial te guiará a través del proceso, comenzando con una nueva aplicación de React y luego incorporando Capacitor para moverse al reino de las aplicaciones móviles nativas. Además, puedes utilizar opcionalmente Konsta UI para mejorar tu interfaz de usuario móvil con Tailwind CSS.
Sobre Capacitor
CapacitorJS es un juego cambiador! Puedes incorporarlo fácilmente en cualquier proyecto web, y lo envolverá en una vista web nativa, generando el proyecto de Xcode y Android Studio nativo para ti. Además, sus plugins te proporcionan acceso a características de dispositivo nativo como la cámara a través de un puente de JS.
Con Capacitor, obtienes una aplicación móvil nativa fantástica sin ningún setup complicado o curva de aprendizaje empinada. Su delgado API y funcionalidad escalonada lo hacen un placer integrarlo en tu proyecto. Confía en mí, te sorprenderá la facilidad con la que puedes lograr una aplicación nativa funcional completa con Capacitor!
Preparando tu aplicación de React
Mientras que existen varios métodos para iniciar aplicaciones de React, vamos a elegir el más simple en este tutorial que proporciona una aplicación de React en blanco:
npx create-react-app my-app
Para crear una aplicación móvil nativa, necesitamos un export de nuestro proyecto. Por lo tanto, incluyamos un script directo en nuestro package.json que se puede utilizar para construir y exportar el proyecto de React:
{
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
}
Ahora puedes ejecutar npm run build sin preocupaciones, y deberías poder ver un carpeta recién creada en la raíz de tu proyecto.
Esta carpeta se utilizará por Capacitor más adelante, pero por ahora debemos configurarla correctamente.
Agregar Capacitor a Tu Aplicación de React
Para empaquetar cualquier aplicación web en un contenedor móvil nativo, debemos seguir unos pocos pasos inicialmente, pero después es tan simple como ejecutar un solo sync comando.
Primero, podemos instalar el Capacitor CLI como dependencia de desarrollo, y luego configurarlo dentro de nuestro proyecto. Durante la configuración, puedes pulsar “enter” para aceptar los valores predeterminados para el nombre y el ID de la caja.
A continuación, necesitamos instalar el paquete principal y los paquetes relevantes para las plataformas iOS y Android.
Finalmente, podemos agregar las plataformas, y Capacitor creará carpetas para cada plataforma en la raíz de nuestro proyecto:
# Install the Capacitor CLI locally
npm install -D @capacitor/cli
# Initialize Capacitor in your React project
npx cap init
# Install the required packages
npm install @capacitor/core @capacitor/ios @capacitor/android
# Add the native platforms
npx cap add ios
npx cap add android
Hasta este punto, deberías poder observar nuevos carpetas de ios y carpetas de android en tu proyecto de React.
Eso son proyectos nativos reales!
Para acceder al proyecto de Android más adelante, debes instalar Android Studio. Para iOS, necesitas un Mac y debes instalar Xcode.
Además, deberías encontrar un archivo capacitor.config.ts en tu proyecto, que contiene algunas configuraciones fundamentales Capacitor utilizadas durante la sincronización. La única cosa a la que debes prestar atención es el webDir, que debe apuntar al resultado de tu comando de compilación. Actualmente, es inexacto.
Para corregir esto, abre el archivo capacitor.config.json y actualiza el webDir:
{
"appId": "com.example.app",
"appName": "my-app",
"webDir": "out",
"bundledWebRuntime": false
}
Puedes probarlo ejecutando los siguientes comandos:
npm run build
npx cap sync
El primer comando npm run build solo compilará tu proyecto de React y exportará la compilación estática.
Mientras la segunda orden npx cap sync sincronizará todos los web code en los lugares correctos de las plataformas nativas para que puedan ser mostrados en una aplicación.
Además, la orden de sincronización podría actualizar las plataformas nativas e instalar plugins, por lo que cuando instales un nuevo Capacitor plugins es hora de ejecutar npx cap sync de nuevo.
Sin darse cuenta, ya estás hecho, así que veamos la aplicación en un dispositivo!
Construir y Desplegar aplicaciones nativas
Para desarrollar aplicaciones iOS, necesitas tener Xcode instalado, y para aplicaciones Android, necesitas tener Android Studio instalado. Además, si planeas distribuir tu aplicación en la tienda de aplicaciones, debes inscribirte en el Programa de Desarrolladores de Apple para iOS y en el Console de Google Play para Android.
Si eres nuevo en el desarrollo móvil nativo, puedes utilizar el Capacitor CLI para abrir fácilmente ambos proyectos nativos:
npx cap open ios
npx cap open android
Una vez que hayas configurado tus proyectos nativos, desplegar tu aplicación en un dispositivo conectado es fácil. En Android Studio, solo necesitas esperar a que todo esté listo, y puedes desplegar tu aplicación en un dispositivo conectado sin cambiar ninguna configuración. Aquí tienes un ejemplo:

En Xcode, debes configurar tu cuenta de firma para desplegar tu aplicación en un dispositivo real en lugar del simulador. Si no lo has hecho antes, Xcode te guía a través del proceso (pero, una vez más, debes estar inscrito en el Programa de Desarrolladores). Una vez hecho esto, puedes simplemente pulsar play para ejecutar la aplicación en tu dispositivo conectado, que puedes seleccionar en la parte superior. Aquí tienes un ejemplo:

¡Felicidades! Has desplegado con éxito tu aplicación web de React en un dispositivo móvil. Aquí tienes un ejemplo:
__CAPGO_KEEP_0__ Live Reload
Capacitor Live Reload
en un dispositivo móvil en un dispositivo móvil con mínimo esfuerzo!
Habilite el acceso a su aplicación hospedada localmente con recarga en vivo en su red al tener la aplicación Capacitor cargar el contenido desde la URL específica.
El primer paso es determinar la dirección IP local. Si está utilizando un Mac, puede encontrar esto ejecutando el siguiente comando en la terminal:
ipconfig getifaddr en0
En Windows, ejecuta:
ipconfig
Luego busque la dirección IPv4.
Podemos instruir a Capacitor a cargar la aplicación directamente desde el servidor agregando otra entrada a nuestro capacitor.config.ts archivo:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'my-app',
webDir: 'out',
bundledWebRuntime: false,
server: {
url: 'http://192.168.x.xx:3000',
cleartext: true
}
};
export default config;
Asegúrese de utilizar la dirección IP y el puerto correctosHe utilizado el puerto de React por defecto en este ejemplo.
Ahora, podemos aplicar estos cambios copiándolos a nuestro proyecto nativo:
npx cap copy
El copy comando es similar a sync, pero solo copiará los cambios realizados en la carpeta web y la configuración, sin actualizar el proyecto nativo.
Puede desplegar su aplicación una vez más a través de Android Studio o Xcode. Después de eso, si cambia algo en su aplicación de React, la aplicación se recargará automáticamente y mostrará los cambios!
Ten en cuenta que si instala nuevos plugins como la cámara, todavía requiere una reconstrucción de su proyecto nativo. Esto se debe a que los archivos nativos se han modificado, y no se puede hacer en tiempo real.
Tenga en cuenta que debe utilizar la IP y el puerto correctos en su configuración. El bloque code anterior muestra el puerto de React por defecto para fines de demostración.
Usando Capacitor Plugins
Vamos a ver cómo usar un plugin Capacitor en acción, que mencionamos antes. Para hacer esto, podemos instalar un plugin bastante simple ejecutando:
npm i @capacitor/share
No hay nada sofisticado en el Compartir plugin, pero lo trae de todos modos el diálogo de compartir nativo. Para esto, ahora solo necesitamos importar el paquete y llamar al share() función desde nuestra aplicación. Vamos a cambiar el src/App.js a esto:
import React from 'react';
import { Share } from '@capacitor/share';
function App() {
const share = async () => {
await Share.share({
title: 'Open Youtube',
text: 'Check new video on youtube',
url: 'https://www.youtube.com',
dialogTitle: 'Share with friends'
});
};
return (
<div>
<h1>Welcome to React and Capacitor!</h1>
<p>
<h2>Cool channel</h2>
<button onClick={() => share()}>Share now!</button>
</p>
</div>
);
}
export default App;
Como se mencionó anteriormente, cuando instalamos nuevos plugins, debemos realizar una operación de sincronización y luego volver a desplegar la aplicación en nuestro dispositivo. Para hacer esto, ejecuta el siguiente comando:
npx cap sync
Después de pulsar el botón, puedes ver el hermoso diálogo de compartir nativo en acción!
Para hacer que el botón se vea más móvil, podemos agregar algunos estilos utilizando mi biblioteca de componentes de interfaz de usuario favorita para aplicaciones web - React (sin intención de broma).
Agregar Konsta UI
He trabajado años con Ionic para crear aplicaciones de plataforma cruzada impresionantes, y fue una de las mejores opciones durante años. Pero ahora ya no lo recomiendo; es muy engorroso integrarlo con React, y no vale la pena cuando ya tienes tailwindcss.
Si deseas una interfaz de usuario móvil que se adapte a estilos específicos de iOS y Android, te recomiendo Konsta UI.
Necesitas tener tailwind ya instalado
Para usarlo, solo necesitamos instalar el paquete react package:
npm i konsta
Además, necesitas modificar tu tailwind.config.js archivo:
// import konstaConfig config
const konstaConfig = require('konsta/config')
// wrap config with konstaConfig config
module.exports = konstaConfig({
content: [
'./src/**/*.{js,ts,javascript,tsx}',
],
darkMode: 'media', // or 'class'
theme: {
extend: {},
},
variants: {
extend: {},
},
plugins: [],
})
konstaConfig extendirá la configuración de Tailwind CSS predeterminada (o tu propia personalizada) con algunas variantes y utilidades de ayuda necesarias para Konsta UI.
Ahora necesitamos configurar el componente principal App para poder establecer algunos parámetros globales (como theme).
Necesitamos envolver toda la aplicación con App en el src/App.js:
import { App } from 'konsta/react';
import './App.css';
function MyApp({ Component, pageProps }) {
return (
// Wrap our app with App component
<App theme="ios">
<Component {...pageProps} />
</App>
);
}
export default MyApp;
Página de ejemplo
Ahora que todo está configurado, podemos utilizar componentes de UI de Konsta React en nuestra aplicación de React.
Por ejemplo, abramos src/App.js y cambiémoslo a lo siguiente:
// Konsta UI components
import {
Page,
Navbar,
Block,
Button,
List,
ListItem,
Link,
BlockTitle,
} from 'konsta/react';
function App() {
return (
<Page>
<Navbar title="My App" />
<Block strong>
<p>
Here is your React & Konsta UI app. Let's see what we have here.
</p>
</Block>
<BlockTitle>Navigation</BlockTitle>
<List>
<ListItem href="/about/" title="About" />
<ListItem href="/form/" title="Form" />
</List>
<Block strong className="flex space-x-4">
<Button>Button 1</Button>
<Button>Button 2</Button>
</Block>
</Page>
);
}
export default App;
Si el recarga en vivo está fuera de sincronía después de instalar todos los componentes necesarios, intenta reiniciar todo. Una vez que hayas hecho eso, deberías ver una aplicación móvil con un aspecto nativo, construida con React y Capacitor!
Deberías ver la siguiente página como resultado:
Conclusión
Capacitor es una excelente opción para crear aplicaciones nativas basadas en un proyecto web existente, ofreciendo una forma sencilla de compartir code y mantener una interfaz de usuario consistente.
Y con la adición de Capgo, es aún más fácil agregar actualizaciones en vivo a tu aplicación, asegurando que tus usuarios siempre tengan acceso a las últimas características y correcciones de errores.
Si deseas aprender a agregar Capgo a tu aplicación de React, consulta el próximo artículo: