Technology moves fast! ⚡ Don't get left behind.🚶 Subscribe to our mailing list to keep up with latest and greatest in open source projects! 🏆


Subscribe to our mailing list

ionic

Build amazing native and progressive web apps with open web technologies. One app running on everything 🎉

Subscribe to updates I use ionic


Statistics on ionic

Number of watchers on Github 33588
Number of open issues 1158
Average time to close an issue 1 day
Main language TypeScript
Average time to merge a PR 2 days
Open pull requests 77+
Closed pull requests 42+
Last commit over 1 year ago
Repo Created almost 6 years ago
Repo Last Updated over 1 year ago
Size 81 MB
Homepage https://ionicfram...
Organization / Authorionic-team
Latest Releasev3.9.2
Contributors229
Page Updated
Do you use ionic? Leave a review!
View open issues (1158)
View on github
Fresh, new opensource launches 🚀🚀🚀
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating ionic for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Ionic

Ionic is the open-source mobile app development framework that makes it easy to build top quality native and progressive web apps with web technologies.

Ionic is based on Web Components and comes with many significant performance, usability, and feature improvements over the past versions.

Packages

Getting Started

Start a new project by following our quick Getting Started guide. We would love to hear from you! If you have any feedback or run into issues using our framework, please file an issue on this repository.

Contributing

Thanks for your interest in contributing! Read up on our guidelines for contributing and then look through our issues with a help wanted label.

Examples

The Ionic Conference App is a full featured Ionic app. It is the perfect starting point for learning and building your own app.

Future Goals

As Ionic components migrate to the web component standard, a goal of ours is to have Ionic components easily work within all of the popular frameworks.

npm version Circle CI Open Source Helpers

Ionic V1

The source code for Ionic V1 has been moved to ionic-team/ionic-v1. Please open any issues and pull requests related to Ionic V1 on that repository.

Ionic V3

The source code for Ionic V3 has been moved to the v3 branch.

ionic open issues Ask a question     (View All Issues)
  • about 2 years I can't add platform in ionic 3 getting these lines
  • about 2 years I can't add platform android
  • about 2 years ion-slides: click event not firing for the first slide
  • about 2 years DateTime component does not support picker labels
  • about 2 years 3.4.0 Memory caching issues
  • about 2 years Windows modal issues
  • about 2 years Side Menu Close Delay iOS
  • about 2 years ion-textarea duplicates when focused and scrolled on Ionic 2
  • about 2 years Some ionic functions do not work on some devices
  • about 2 years in the ion-range dualknobs example knobs are not moving
  • about 2 years ion-tab did not work without root property
  • about 2 years Input type DOM UI not updated
  • about 2 years Ion-Slides Coverflow Warping
  • about 2 years infinite scroll with ion-slide tabs will loading in every tabs elements
  • about 2 years ngModel on ion-input of type "number" casts the variable to string
  • about 2 years Minor styling issue with form and no-lines set
  • about 2 years DateTime pickerFormat dynamic update issue
  • about 2 years bug: ion-datetime does not respect max/min value
  • about 2 years 3.4.0 - SCSS Mixin Conflicts (e.g. transform)
  • about 2 years No padding for statusbar (on iOS) when nav-pushing inside a modal
  • about 2 years Improve accessibility on searchbar
ionic open pull requests (View All Pulls)
  • feat(datetime): add support for hours, minutes, seconds picker labels
  • feat(menutype): adds a new menu type split
  • feat(directions): concept - let user know when direction is not loaded
  • fix(spinner): RTL fix for Spinner
  • fix(changelog): update changelog with breaking change
  • fix(card): fix default margin start/end values
  • fix(overlay): onWillDismiss is called as expected
  • fix(modal): implements unused modal background color variables
  • Improve accessibility on searchbar
  • fix(border): border & border-width mixins for rtl
  • fix(slides): support reverse on rtl and ltr
  • feat(progress): adds progress bar
  • feat(range): rtl support
  • chore(package): bump Angular version to 4.2.3
  • Add lifecycle hooks interfaces like in angular core
  • fix(select): reset placeholder text when no value is selected (#10439)
  • refactor(config): make set method strongly typed
  • feat(checkbox) Indeterminate state
  • feat(datetime): add day of the week values filter
  • refactor(OpaqueToken): change deprecated import
  • perf(bundle): merge duplicate selectors with `dir` attribute
  • fix(referesher): fix a bug with browser
  • fix(events): fixes publishing of platform specific events
  • refactor(events): rewrites everything to use rxjs
  • Added IDs to Inputs
  • fix(Slides) move global vars to Slides class members
  • fix(escape-key-event) handle fast and double event
  • fix(swiper): use correct length for nested slides
  • Fix unguarded unregistration
  • feat(datetime): Use current date/time in datetime picker if it's empty
  • Add swpieable functional to Tabs component
  • fix(radio-group): propagate the disabled attribute
  • Add CodeTriage badge to ionic-team/ionic
  • docs: demonstrate use of onDidDismiss() with Alert
  • Merge pull request #1 from driftyco/master
  • fix(item-reorder): auto-scroll fix while dragging
  • retain queryString
  • fix: handle keyboard height of iPhone X
  • simplified code sample
  • Fix a small typo in the ActionSheetController documentation
  • Fix linked to 404
  • Add missing `electron` platform to the platform's list
  • fix(sass): use sass variables for slide background values
  • Added an id to the buttons on select
  • Spelling fix
  • why don't use okevent
  • Fix min/max restriction in datetime.ts
  • refactor(e2e) use jest as e2e test runner
  • fix(infinite-scroll): Added try/catch block for when event is undefined
  • Update: HTTP -> HTTPS
  • refactor(toast): add string literal type
  • fix(cordova): apply safe area to footer toolbar when tabs are hidden
  • fix (module-loader): remove module from ModuleLoader cache map on promise reject
  • fixed links to menu API docs in MenuController docs
  • [ItemSliding] New event ionClose + swipe close detection fix
  • [Slide] Don't touchstart when moving.
  • fix(picker): Invalid Dates Bug - make ionChange event fire on first picker column change
  • Update modal-controller.ts Showing available options on modal params
  • fix(alert): added missing 'disabled' attribute from input
  • Fix : infinite-scroll in IOS not firing
  • fix(*): allow modal and popover to use lazy loaded components
  • refactor(page): removes ion-page wc
  • fix(dom-leak): Keep reference of the 'orientationchange' handler
  • feat(): Add animation on skeleton text
  • refactor(content): using prop for padding/margin
  • Proposed new template without extra lines
  • Include an example demonstrating onWillDismiss
  • fix(alert) AOT compile w/strictNullChecks (#14056)
  • fix issue with null references when accessing views
  • Move swipe event to item-options
  • Selectors for list inset datetime and select
  • fix(keyboard | content): Fix content lagging
  • Remove scrollbars on windows for action-sheet / resvolves #13966
  • chore(): add 4.x to issue template
  • fix(theming): spinner lines
  • Mohammad waleed infinite scroll fix
  • Apply Ionic v0.1.4-5 changes to @ionic/angular.
ionic questions on Stackoverflow (View All Questions)
  • constructor not being called on first click - ionic 2
  • How to change app version in ionic framework?
  • IONIC 2 Application
  • Ionic 2 Range: Value to Text
  • Twilio integration in ionic apps
  • Ionic 2 & Firebase data downloading too much
  • Ionic 2 - (window as any).resolveLocalFileSystemURL() throwing error
  • Error 'ionic run Android' on device
  • ionic serve bug with @ionic/cli-plugin-ionic-angular in ionic3
  • Ionic 2 chrome dev tools shows a lot of listeners
  • Angular and Ionic 2 : Showing 2 columns per row with NgFor and a conditional display
  • Keyboard pushes the screen up ionic 2
  • Angular 2 Ionic - Create a new directive
  • Cordova plugin that's not included in Ionic Native won't update the view in Ionic2
  • Deep Linking Ionic: Open internal post pages via link
  • Adding onPause/onResume to a Youtube video within an Ionic 2 page
  • Ionic iOS promise never resolves
  • Ionic 2 CloudModule Crypto.js Error
  • How to Send Data with POST Requests in Ionic 2
  • Is there any other easy way to get all data from native storage from ionic?
  • How to set a location to be validated through GPS on Ionic 2?
  • IONIC 1 SERVE -L command giving me an error on browser
  • Ionic 3 side menu title center
  • Ionic Angular : Triggering checkbox from card click
  • Ionic 2 Angular 2 - can't access NavController from method
  • How can I set the app icon in Ionic for SDK version?
  • ionic cordovaSQLite plugin error Cannot read property 'openDatabase' of undefined
  • 400 bad request while performing post request in ionic to magento 2 API
  • Divider on ionic 2 not working
  • How to set an Ionic (>=2) toolbar to a different background color than the navbar
ionic list of languages used
ionic latest release notes
v3.9.2 3.9.2

3.9.2 (2017-11-08)

Upgrade Instructions

ionic-angular 3.9.2 is patch release of ionic-angular 3.9.1. To upgrade, follow the instructions here for updating to ionic-angular 3.9.0. After completing those steps, update the ionic-angular version to 3.9.2.

npm install ionic-angular@3.9.2 --save

Bug Fixes

  • action-sheet: remove ios inertia scroll to fix flicker (c463b06), closes #13262
v3.9.1 3.9.1

3.9.1 (2017-11-08)

Upgrade Instructions

ionic-angular 3.9.1 is patch release of ionic-angular 3.9.0. To upgrade, follow the instructions here for updating to ionic-angular 3.9.0. After completing those steps, update the ionic-angular version to 3.9.1.

npm install ionic-angular@3.9.1 --save

Bug Fixes

  • datetime: avoid adding cancel and done button repeatedly (248a1ce)
v3.9.0 3.9.0

3.9.0 (2017-11-08)

Upgrade Instructions

ionic-angular 3.9.0 adds support for @angular 5.0.0 :tada:! It is a drop-in replacement for ionic-angular 3.8.x.

To update, remove existing node_modules and any lock files, and then update package.json to the following deps.

"dependencies" : {
  ...
  "@angular/common": "5.0.0",
  "@angular/compiler": "5.0.0",
  "@angular/compiler-cli": "5.0.0",
  "@angular/core": "5.0.0",
  "@angular/forms": "5.0.0",
  "@angular/http": "5.0.0",
  "@angular/platform-browser": "5.0.0",
  "@angular/platform-browser-dynamic": "5.0.0",
  "@ionic/storage": "2.1.3",
  "ionic-angular": "3.9.0",
  "rxjs": "5.5.2",
  "zone.js": "0.8.18"
  ...
},
"devDependencies: {
  "@ionic/app-scripts": "3.1.0"
  "typescript" : "2.4.2"
}

If your app uses RXJS, see the instructions below to update.

RXJS 5.5.2 Updates

The recent update of RXJS includes a change in how operators are applied.

Traditionally, operators were applied like this:

import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/switchMap';

export MyClass {


  someMethod(){
    // Using Reactive Forms
    this.input.valueChanges
    .debounceTime(500)
    .switchMap(inputVal => this.service.get(inputVal))
    .subscribe(res => console.log(res))
  }
}

This approach involved modifying the Observable prototype and patching on the methods.

RXJS 5.5 introduces a different way to do this that can lead to significantly smaller code bundles, lettable operators.

To use lettable operators, modify the code from above to look like this:

//Use Deep imports here for smallest bunlde size
import { debounceTime } from 'rxjs/operators/debounceTime';
import { switch } from 'rxjs/operators/switchMap';

export MyClass {


  someMethod(){
    // Using Reactive Forms
    // We use the new `.pipe` method on the observable
    // too apply operators now

    this.input.valueChanges
    .pipe(
      debounceTime(500),
      switchMap(inputVal => this.service.get(inputVal))
    )
    .subscribe(res => console.log(res))
  }
}

This slight change allows only import the operators we need in our code. This will result in a smaller, faster application. This example uses Deep Imports, which allow the module we want to import to be isolated.

Take a look at this doc for more information.

Bug Fixes

  • action-sheet: move box-shadow to first group (4f3e91b)
  • alert: focus input after it is ready (#13259) (e555eae)
  • datetime: use spread operator to copy pickerOptions (#13202) (2ab8385), closes #11641
  • input: better support for WKKeyboard (#13106) (e7ac15f)
  • tabs: no safe area padding for top tabs (236e7f8)
  • tap-click: clear activated state on activable element when appropriate (#13258) (5742540), closes #13044
  • VirtualScroll: stop from resizing while out of view (#13143) (6978bb5)
Other projects in TypeScript