Experience the power of declarative syntax with the flexibility of React Native and Expo
Write UI components using familiar XML-like tags in custom .ignite files with automatic compilation to React Native.
Smart state inference and generation with proper TypeScript types, useState hooks, and setter functions.
Automatic React Navigation setup with tab bars, stack navigation, and route generation from file structure.
Powerful command-line interface for creating, developing, and building apps with platform-specific options.
Real-time compilation during development with file watching, instant feedback, and comprehensive error handling.
Seamless integration with any npm package including Firebase, Expo, and third-party libraries.
Complete toolkit for creating, developing, and building your apps
ignite create <name>Create a new Ignite app with Expo setup
ignite devStart development server with compilation
ignite dev --androidStart development server for Android
ignite dev --iosStart development server for iOS
ignite buildBuild app for production
ignite -vCheck version information
See how Ignite simplifies React Native development with .ignite files
import { LinearGradient } from 'expo-linear-gradient'
import firebase from 'firebase'
screen title="Home" isTabScreen="true" tabOrder="1" tabIcon="home"
state user=null
state loading=false
state email=""
state password=""
async handleLogin() {
setLoading(true)
try {
const result = await firebase.auth()
.signInWithEmailAndPassword(email, password)
setUser(result.user)
go('/profile')
} catch (error) {
console.log('Login failed:', error)
}
setLoading(false)
}
<View style="container">
<LinearGradient colors={['#ff6b6b', '#4ecdc4']} style="gradient">
<Text style="title">Welcome to Ignite</Text>
<Input
bind="email"
placeholder="Email"
keyboardType="email-address"
/>
<Input
bind="password"
placeholder="Password"
secureTextEntry={true}
/>
<Button
onPress="handleLogin()"
disabled={loading}
>
{loading ? 'Logging in...' : 'Login'}
</Button>
</LinearGradient>
</View>
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 20,
},
title: {
fontSize: 24,
fontWeight: 'bold',
color: 'white',
textAlign: 'center',
marginBottom: 20,
},
gradient: {
flex: 1,
borderRadius: 10,
padding: 20,
},
});Understanding the Ignite compilation and development process
Create declarative UI components with built-in state management and navigation in your app/ directory.
Ignite parser processes your files and generates optimized React Native components with TypeScript support.
File watcher detects changes, recompiles automatically, and hot reloads in Expo for instant feedback.