Search docs/
Native SolutionsCore Device

Community Plugins

Community Plugins are a collection of open source Cordova plugins that make it easy to add native functionality to any Ionic app.

Community Plugins are submitted and maintained by the Ionic community. While community members are generally quick to find and fix issues, certain plugins may not function properly. For teams that require dedicated native plugin support, please explore Ionic Native and request a free trial.

Note: These docs are for apps built with Ionic Framework 4.0.0 and greater. For older Ionic v3 projects, please see here.

Capacitor Support

Ionic Native also works with Capacitor, Ionic's official native app runtime and spiritual Cordova successor. For details, see here.


All plugins have two components - the native code (Cordova) and the TypeScript code (Ionic Native). Cordova plugins are also wrapped in a Promise or Observable in order to provide a common plugin interface and modernized development approach.

Using the Camera plugin as an example, first install it:

$ ionic cordova plugin add cordova-plugin-camera
$ npm install @ionic-native/camera

Next, begin using the plugin, using the various framework usage options below. For FAQ, see here.


Import the plugin in a @NgModule and add it to the list of Providers. For Angular, the import path should end with /ngx. Angular's change detection is automatically handled.

// app.module.ts
import { Camera } from '@ionic-native/camera/ngx';



  providers: [
export class AppModule { }

After the plugin has been declared, it can be imported and injected like any other service:

// camera.service.ts
import { Injectable } from '@angular/core';
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';

  providedIn: 'root'
export class PhotoService {
  constructor(private camera: Camera) { }

  takePicture() {
    const options: CameraOptions = {
      quality: 100,
    } => {
      // Do something with the new photo

    }, (err) => {
     // Handle error
     console.log("Camera issue: " + err);

Vanilla JavaScript

Ionic Native can also be used in a vanilla JavaScript app targeting ES2015+ and/or TypeScript. To use any plugin, import the class from the appropriate package and use its static methods:

import { Camera } from '@ionic-native/camera';

document.addEventListener('deviceready', () => {
    .then(data => console.log('Took a picture!', data))
    .catch(e => console.log('Error occurred while taking a picture', e));