Getting Started
Ionic Setup
npm install -g @ionic/cli
# Create a new Ionic app
ionic start myApp tabs
ionic start myApp blank
ionic start myApp sidemenu
# Run the app in the browser
ionic serve
# Add platforms
ionic capacitor add android
ionic capacitor add ios
# Build and run on device
ionic capacitor build android
ionic capacitor run android
Basic App Structure
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
bootstrap: [AppComponent],
})
export class AppModule {}
UI Components
Basic Components
<ion-button>Default Button</ion-button>
<ion-button color="primary">Primary</ion-button>
<ion-button color="secondary">Secondary</ion-button>
<ion-button color="danger">Danger</ion-button>
<ion-button fill="outline">Outline</ion-button>
<ion-button fill="clear">Clear</ion-button>
<ion-button size="small">Small</ion-button>
<ion-button size="large">Large</ion-button>
<ion-button expand="block">Block</ion-button>
<ion-button disabled>Disabled</ion-button>
// Input components
<ion-input placeholder="Enter input"></ion-input>
<ion-textarea placeholder="Enter text"></ion-textarea>
<ion-checkbox>Checkbox</ion-checkbox>
<ion-toggle>Toggle</ion-toggle>
<ion-range></ion-range>
<ion-select placeholder="Select option">
<ion-select-option value="option1">Option 1</ion-select-option>
<ion-select-option value="option2">Option 2</ion-select-option>
</ion-select>
Layout Components
<ion-grid>
<ion-row>
<ion-col>Column 1</ion-col>
<ion-col>Column 2</ion-col>
<ion-col>Column 3</ion-col>
</ion-row>
</ion-grid>
// Responsive grid
<ion-grid>
<ion-row>
<ion-col size="12" size-sm="6" size-md="4" size-lg="3">
Responsive Column
</ion-col>
</ion-row>
</ion-grid>
// Card component
<ion-card>
<ion-card-header>
<ion-card-title>Card Title</ion-card-title>
<ion-card-subtitle>Card Subtitle</ion-card-subtitle>
</ion-card-header>
<ion-card-content>
Card content goes here
</ion-card-content>
</ion-card>
// List component
<ion-list>
<ion-item>
<ion-label>Item 1</ion-label>
</ion-item>
<ion-item>
<ion-label>Item 2</ion-label>
</ion-item>
</ion-list>
Navigation Components
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="tab1">
<ion-icon name="home"></ion-icon>
<ion-label>Home</ion-label>
</ion-tab-button>
<ion-tab-button tab="tab2">
<ion-icon name="settings"></ion-icon>
<ion-label>Settings</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
// Menu component
<ion-menu contentId="main-content">
<ion-header>
<ion-toolbar>
<ion-title>Menu</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item>Menu Item 1</ion-item>
<ion-item>Menu Item 2</ion-item>
</ion-list>
</ion-content>
</ion-menu>
<ion-app>
<ion-router-outlet id="main-content"></ion-router-outlet>
</ion-app>
Advanced Components
async function presentModal() {
const modal = await modalController.create({
component: ModalPage,
componentProps: {
'prop1': value1,
'prop2': value2
}
});
return await modal.present();
}
// Loading component
async function showLoading() {
const loading = await loadingController.create({
message: 'Please wait...',
duration: 2000
});
await loading.present();
}
// Toast component
async function showToast() {
const toast = await toastController.create({
message: 'Your settings have been saved.',
duration: 2000
});
await toast.present();
}
// Alert component
async function showAlert() {
const alert = await alertController.create({
header: 'Alert',
message: 'This is an alert message.',
buttons: ['OK']
});
await alert.present();
}
Theming & Styling
CSS Variables
:root {
/* Primary colors */
--ion-color-primary: #3880ff;
--ion-color-primary-rgb: 56, 128, 255;
--ion-color-primary-contrast: #ffffff;
--ion-color-primary-contrast-rgb: 255, 255, 255;
--ion-color-primary-shade: #3171e0;
--ion-color-primary-tint: #4c8dff;
/* Secondary colors */
--ion-color-secondary: #3dc2ff;
--ion-color-secondary-rgb: 61, 194, 255;
--ion-color-secondary-contrast: #ffffff;
--ion-color-secondary-contrast-rgb: 255, 255, 255;
--ion-color-secondary-shade: #36abe0;
--ion-color-secondary-tint: #50c8ff;
/* Font family */
--ion-font-family: 'Roboto', sans-serif;
/* Background and text colors */
--ion-background-color: #f4f5f8;
--ion-text-color: #222428;
}
// Dark theme
@media (prefers-color-scheme: dark) {
:root {
--ion-background-color: #121212;
--ion-text-color: #ffffff;
}
}
// Using CSS variables in components
.my-custom-class {
background: var(--ion-color-primary);
color: var(--ion-color-primary-contrast);
font-family: var(--ion-font-family);
padding: 16px;
}
Platform Styles
import { Platform } from '@ionic/angular';
constructor(private platform: Platform) {
this.initializeApp();
}
initializeApp() {
this.platform.ready().then(() => {
// Check if running on iOS
if (this.platform.is('ios')) {
// Apply iOS specific styles or logic
this.applyIosStyles();
}
// Check if running on Android
if (this.platform.is('android')) {
// Apply Android specific styles or logic
this.applyAndroidStyles();
}
// Check if running on capacitor
if (this.platform.is('capacitor')) {
// Native functionality available
this.enableNativeFeatures();
}
});
}
// Platform-specific SCSS
.ios {
.header-class {
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
}
}
.md {
.header-class {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
}
Native Functionality
Cordova/Capacitor Plugins
import { Camera, CameraResultType } from '@capacitor/camera';
async takePicture() {
const image = await Camera.getPhoto({
quality: 90,
allowEditing: true,
resultType: CameraResultType.Uri
});
// image.webPath will contain a path that can be set as an image src
this.imageUrl = image.webPath;
}
// Using Geolocation plugin
import { Geolocation } from '@capacitor/geolocation';
async getCurrentPosition() {
const coordinates = await Geolocation.getCurrentPosition();
this.latitude = coordinates.coords.latitude;
this.longitude = coordinates.coords.longitude;
}
// Using Storage plugin
import { Storage } from '@capacitor/storage';
async setData() {
await Storage.set({
key: 'user',
value: JSON.stringify({
name: 'John',
age: 30
})
});
}
async getData() {
const item = await Storage.get({ key: 'user' });
this.user = JSON.parse(item.value);
}
Device APIs
import { Device } from '@capacitor/device';
async getDeviceInfo() {
const info = await Device.getInfo();
console.log('Device model:', info.model);
console.log('Platform:', info.platform);
}
async getBatteryInfo() {
const info = await Device.getBatteryInfo();
console.log('Battery level:', info.batteryLevel);
console.log('Is charging:', info.isCharging);
}
// Using Network information
import { Network } from '@capacitor/network';
async getNetworkStatus() {
const status = await Network.getStatus();
console.log('Network connected:', status.connected);
console.log('Connection type:', status.connectionType);
}
// Listen for network changes
Network.addListener('networkStatusChange', (status) => {
console.log('Network status changed', status);
});
// Using Share API
import { Share } from '@capacitor/share';
async shareContent() {
await Share.share({
title: 'Check out this app',
text: 'I found this amazing app...',
url: 'https://ionicframework.com/',
dialogTitle: 'Share with friends',
});
}
Comprehensive Ionic Mobile App Cheatsheet Reference
This Ionic Mobile App cheatsheet on Nikhil Learn Hub collects syntax, commands, and practical snippets for quick revision. Learn Ionic components, navigation, Angular integration, mobile UI design, and hybrid app development with examples.
Use the reference cards and examples above during coding sessions; return here instead of scattered searches when you need dependable reminders. Follow the Ionic learning roadmap when you want structured lessons beyond one-page lookups.
Quick lookup coverage
- Syntax, commands, and API signatures
- Copy-ready examples and common patterns
- Terminology for coursework and interviews
- Cross-links to the matching learning roadmap
How to study with this sheet
- Production debugging and tuning reminders
- Security, performance, or scale cautions
- Integration with adjacent stacks on this site
- Deeper study through tutorials and roadmaps
Who Should Use This Cheatsheet
Students, self-taught developers, and professionals who need fast Ionic Mobile App lookups during labs, debugging, or interview revision should keep this page bookmarked.
Related Resources on Nikhil Learn Hub
- Ionic learning roadmapstructured learning path for the same technology
- Cheatsheets hubbrowse all quick-reference sheets
- Technology hubtutorials, roadmaps, and practice hubs