Components, navigation, native bridges, and build commands for Ionic apps are gathered for hybrid mobile teams. Follow the Ionic roadmap when you want structured practice beyond what fits on a single cheatsheet page.

Ionic learning roadmap — Cross-platform mobile UI and Capacitor integration in roadmap steps.

Getting Started

Ionic Setup

# Install Ionic CLI globally
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
Note: Make sure you have Node.js installed. For iOS development, you need a Mac with Xcode installed.

Basic App Structure

// app.module.ts
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 {}
Note: Ionic apps are built on Angular (or React/Vue) and follow their standard project structure with additional Ionic-specific components and services.

UI Components

Basic Components

// Button variants
<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>
Note: Ionic provides a wide range of UI components that automatically adapt to the platform (iOS or Android) look and feel.

Layout Components

// Grid system
<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>
Note: Ionic's grid system is based on CSS Flexbox and provides a responsive 12-column layout that works across all screen sizes.

Navigation Components

// Tabs component
<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

// Modal component
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

// Global theming in variables.css
: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

// Using platform detection
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);
  }
}
Note: Ionic automatically adapts its components to match the design language of the platform (iOS or Material Design), but you can also customize this behavior.

Native Functionality

Cordova/Capacitor Plugins

// Using Camera plugin
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

// Using Device information
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',
  });
}
Note: Capacitor provides a consistent API for accessing native device features across iOS, Android, and the web. Most plugins work on all platforms with the same code.
Quick reference guide

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.