Release Notes
A complete release history for Ionic Framework is available on GitHub. Documentation for recent releases can also be found below.
See versioning for information about our policy and commitment to stability.
5.3.5
patchLatest Production VersionOctober 7 2020
Bug Fixes
- button: allow any element type to use the "icon-only" slot (#22168) (c454c84)
- datetime: do not set ampm when the column doesn't exist (#22220) (18fb885), closes #22149
- datetime: remove the automatic switching from am to pm (#22207) (f81d18c), closes #18924 #22171 #22199
- item: properly align datetime and select with fixed or no labels (#22221) (f42c688), closes #18773 #18761 #18779
- label: keep color when focused on a floating or stacked label (#18576) (992580a), closes #18531
- select: do not close popover or set value when switching with arrow keys (#22210) (1878c8e), closes #22179
5.3.4
patchSeptember 25 2020
Bug Fixes
- alert: follow accessibility guidelines outlined by wai-aria (#22159) (e9b2cc8), closes #21744
- overlays: return focus to presenting element after dismissal (#22167) (cc45ad8), closes #21768
- picker-column: add cancelable check to avoid intervention error in chrome (#22140) (a24a041), closes #22137
- radio: follow accessibility guidelines outlined by wai-aria (#22113) (ea0e049), closes #21743
- reorder: allow click event propagation when reorder group is disabled (#21947) (baafe08), closes #21017
- segment: do not allow text selection on desktop (#22158) (1526bdf)
Performance Improvements
5.3.3
patchSeptember 17 2020
Bug Fixes
- datetime: do not reset to am when changing hour and pm is set (#21997) (8b85fe0), closes #19175 #19260 #20026 #16630
- input: only focus the first input / textarea when clicking on the parent item (#22049) (99f2532), closes #22037 #22032
- react: Keep a hold of previous routes when doing a redirect, closes #22053 (74af3cb)
- react: redirect routes should unmount leaving component, fixes #22022 (#22029) (b11e06c)
- textarea: do not generate duplicate IDs between ion-input and ion-textarea (#22074) (c72c7ff), closes #21542
5.3.2
patchAugust 27 2020
Bug Fixes
- input: improve reliability of scroll assist when accessory bar is enabled (#21936) (22477fb), closes #21912
- input: properly focus the input when clicking the item padding in WebKit (#21930) (e4964ff), closes #21509
- input: remain focused in the input after pressing the clear button (#21985) (6878fb9), closes #21549
- label: use translateY so input caret shows up due to webkit issue (#21949) (00eac33), closes #21943
- overlays: prevent focus from being stolen when presenting another overlay from within a modal (#21856) (5c177d7), closes #21840
- range: properly display stacked labels in an item with a range (#21944) (9f4b01e), closes #21625
- react: export correct animation types (#21950) (36e4bf7)
- react: removed exporting of ionRenderToString to decrease bundle size, closes #21917 (#21928) (434befe)
- react: setting active tab properly on mount, closes #21830 (#21833) (f58424f)
- react: fix tab currentHref when changing tabs, closes #21834 (#21835) (74468ab)
5.3.0 Phosphorus
minorJuly 23 2020
Bug Fixes
- angular: per-page animations now work with swipe to go back (#21706) (2664587), closes #21692
- datetime: remove unneeded combobox role (#21708) (f00ad8a)
- input: clear button can now be tabbed to (#21633) (1dcd9de)
- ios: improve scroll assist reliability on password inputs (#21703) (3cbf9e7), closes #21688
- keyboard: keyboard events now consistently fire on android (#21741) (020f3cc), closes #21734
- nav: insertPages method correctly inserts multiple pages with props (#21725) (eb592b8), closes #21724
- overlays: trap focus inside overlay components except toast (#21716) (fff4aec), closes #21647
- segment-button: allow min-width to be overridden (#21722) (88f1828), closes #21105
- title: allow overriding of large title transform-origin (#21770) (dbe6853), closes #21761
- virtual-scroll: properly calculate top offset when nested (#21581) (d297ecb)
Features
- card: expose global card css variables (#21756) (096eef4), closes #21694
- input: accept datetime-local, month, and week type values (#21758) (fa93dff), closes #21757
- input, textarea: expose native events for ionBlur and ionFocus (#21777) (a625c83), closes #17363
- react: add custom history to IonReactRouter (#21775) (d4a5fbd), closes #20297
- react: add new react router (#21693) (c171ccb)
- router: add navigation hooks (#21709) (77464ef)
- segment-button, toast: expose additional shadow parts (#21532) (a5e4669)
- select: add optional generic typings (#21514) (7c2d0c9)
5.2.3
patchJuly 1 2020
Bug Fixes
- angular: expose createAnimation in addition to AnimationController (#21616) (a5b3750), closes #21615
- select: change role to listbox (#21609) (8c79e2c)
- slides: enable keyboard integration (#21608) (26674f1), closes #21554
- textarea: add aria-labelledby to native textarea (#21606) (88f23b1), closes #21600
5.2.2
patchJune 17 2020
Bug Fixes
- action-sheet, alert: resolve double click issue when running in iOS mode on chrome (#21506) (bcccc21), closes #21503
- angular: fix issue where navAnimation was being incorrectly overridden (#21508) (e968bd0), closes #21495
- input: add aria-label to clear button (#21538) (d8b377f), closes #21537
- ios: respect toolbar opacity when doing nav transition (#21512) (24cfdc3)
- segment: ensure checked classes get set after not having a value (#21547) (17308f2), closes #21546
5.2.1
patchJune 11 2020
Bug Fixes
- angular: resolve error when not using ngModel on components (4083e32)
5.2.0 Silicon
minorJune 10 2020
Bug Fixes
- action-sheet, toast: allow button handler to return
Promise<void>(#21259) (7703da2) - angular: patch FormControl methods to properly sync Ionic form classes (#21429) (e95b481)
- datetime: ensure year-only values are not affected by timezone when parsing (#21309) (3937101)
- header: large title transition now works on older versions of iOS (#21339) (2dac12c)
- img: use setTimeout fallback on older versions of chrome (#21358) (0bf9449)
- ios: add haptic drag gesture for action sheet and alert components (#21060) (33be1f0)
- item: inherit align-items from parent item (#19278) (882f8fe), closes #18703
- item: input-wrapper now inherits overflow (#21282) (29d208d)
- menu-button: screen readers now properly announce menu button (#21324) (eaf4fb6)
- modal: card style modal no longer gets stuck when swiping quickly (#21224) (448dfa0)
- modal: set card-style modal height using the --height css variable (#21453) (a4f0bdb)
- reorder-group: revert item to original position when passing false to complete (#21396) (5f2001c), closes #19128
- router: use correct nav transition when going back (#21301) (c8db0d5)
- scroll-assist: improve scroll detection accuracy (#21416) (137c49d)
- slides: update Swiper dependency to resolve error when doing SSR (#21350) (3290604)
- textarea: native textarea inherits max/min width and height (#21333) (2377480)
Features
- alert: add destructive role to alert buttons (#21269) (e53f024)
- alert: add support for custom input attributes (#21365) (1ed8169)
- all: add all autocomplete values to input and searchbar (#21297) (4fd7c0c)
- all: add optional generic typings for overlay component methods (#21393) (5bf83b8)
- all: add shadow parts to missing components (#21436) (17375d2)
- all: add support for configuring animations on a per-page basis (#21433) (f34d375)
- angular: expose activatedView (#21302) (829a0d9)
- angular: expose getPlatforms and isPlatform (#21308) (4af54a2)
- angular: add strongly typed Ionic lifecycle hooks (#18044) (53fc8e3), closes #18043
- fab-button: add close icon font size css variable (#19628) (df408f9)
- fab-button: add closeIcon property (#19626) (698e526)
- select-option: pass class from the option to the interface for individual styling (#21304) (5285824)
5.1.1
patchMay 13 2020
Bug Fixes
- all: improve scroll assist reliability for below the fold inputs (#21206) (7166a29)
- all: overlay components no longer display outline when focused (#21226) (bb62023)
- display: remove 1px gap between mutually exclusive breakpoints (#21276) (703ef5c), closes #20993 #20743
- header: do not error on collapsible header on devices that do not support IntersectionObserve (#21222) (0c13f25)
- input: check for tabindex and pass it properly to native input (#21170) (dd4cb70), closes #17515
- ios: position page transition shadow properly under footer (#21095) (50678c0)
- md: do not hide page when swipe gesture is cancelled (#21247) (f334e83)
- overlays: respect keyboardClose property when opening overlays (#21240) (9d0dcbb)
- picker: haptics now work properly (#21268) (8e11ecc)
- refresher: correctly select shadow root on older browsers (#21237) (f23f1cb)
- refresher: refresher completes even after switching to a new tab (#21236) (1e6f923)
- segment-button: screen readers now announce selected state properly (#21273) (85cc35e)
- toggle: screen readers now announce toggle properly (#21168) (1fbdb22)
5.1.0 Aluminium
minorApril 30 2020
Bug Fixes
- action-sheet: show correct cancel button background on dark mode (#21084) (e442324), closes #21082
- all: correctly default gestures to use a passive listener (#21038) (dea9248)
- angular: do not navigate to the same tab if already active (#21085) (15203de), closes #21074 #19943
- back-button: announce back button text correctly by screen readers (#21053) (14c226c), closes #21043
- datetime: locale inputs are now reactive (#20826) (a75e8f3), closes #20367
- ios: account for nested tabs with page transition (#20955) (e23dec5), closes #20948
- ios: properly animate content when navigating from a tabbed page (#20918) (8a02b28), closes #20912
- loading: correctly announce spinner by screen readers (#21116) (63d8f62), closes #21107
- md: do not display blank screen when using MD page transition and swipe gesture (#21058) (4973807), closes #21056
- modal: properly inherit border radius for modals on Safari (#20887) (bd64509), closes #20878
- modal: swipeToClose property is now reactive (#21073) (4bd9134), closes #21072
- overlays: focus overlay when presented (#20997) (fc2be8d), closes #19882 #17126
- overlays: prevent accidental clicks when dismissing overlays (#21093) (671802f), closes #21092
- react: IonTabBar properly extends IonicReactProps (#21009) (102a842), closes #21006
- refresher: properly check for Haptics plugin on web (#21156) (c53b136), closes #21148
- refresher: properly calculate content dimensions in native ion-refresher (#21157) (83dcc71)
- router: account for query string when pushing page (#21071) (eab3373)
- searchbar: correctly announce the cancel button text by screen readers (#21049) (15a603b), closes #21013
- select: account for MutationObserver when performing SSR (#21068) (66e8e64), closes #21063
- slides: slides no longer break with Angular Ivy enabled (#20899) (3123a31), closes #20356
- split-pane: properly show border in rtl mode (#20995) (7a21708), closes #20994
- textarea: height is set correctly when using autoGrow in modals (#20971) (32ee040), closes #18993
Features
- all: add ability to continue processing hardware back button events (#20613) (3821c04), closes #17824
- all: add ability to eject from Ionic sanitizer (#20457) (fa9ddc9), closes #18277
- angular: support multi-app for ng-add schematic (#20768) (39e6c8f)
- animation: add option to clean up old animation stylesheets (#20940) (5b98405), closes #20610
- app: add keyboard open and close events (ionKeyboardDidShow and ionKeyboardDidHide) (#18478) (ae5f1dd)
- back-button: add backButtonDefaultHref property to Ionic Config (#20491) (1b11ff7), closes #19305
- checkbox: add parts support for container, mark (#20950) (d4b9151)
- content: add parts support for background, scroll (#20929) (578ab93)
- datetime: add parts support for placeholder, text (#20930) (76ca475)
- gesture: add option to run inside NgZone for Angular apps (#20685) (429edb0), closes #20529
- gesture: add support for blurring active inputs on gesture start (#20638) (32ecdd6), closes #20588
- img: add parts support for image (#20943) (63c75ed)
- input: add support for enterkeyhint (#21035) (3efaf43), closes #21034
- item: add parts support for detail-icon (#20979) (6414496)
- menu: add parts support for backdrop, container (#20978) (50bc212)
- radio: add parts support for container, mark (#20952) (228ca2b)
- range: add parts support for bar, bar-active, knob, pin, tick, tick-active (#20961) (619f67a)
- react: expose selectTab method and activeTab, closes #19935 (#21171) (43f9d24)
- reorder: add parts support for icon (#20960) (ba20209)
- searchbar: add border-radius css variable (#20662) (acaa1d9), closes #17426 #18247
- searchbar: add support for enterkeyhint (#21036) (e90683a), closes #21034
- select: add parts support for placeholder, icon, text (#21108) (30a1c89)
- slides: update to swiper 5 (#20917) (4e28445), closes #20033
- textarea: add support for inputmode and enterkeyhint (#21106) (1622d9b)
- toast: add white-space variable for toast message (#20729) (e5e02d4), closes #20727
- toggle: add parts support for handle, track (#20962) (d2b772f)
- toggle: improve customization with css vars and auto-adjust handle width and height (#21050) (04ace4c), closes #19868 #20474
Performance Improvements
5.0.6
patchMarch 25 2020
Bug Fixes
- all: only warn invalid mode if used on an ionic component (#20828) (6ed1c51), closes #20055
- all: properly scroll to input with scroll assist (#20742) (e24060e), closes #19589
- angular: export Animation and Gesture related types (#20766) (2ece194)
- angular: respect animation property for ion-router-outlet (#20767) (f2dbe1f), closes #20764
- content: apply --offset-top and --offset-bottom values correctly (#20790) (2707289), closes #20735
- content: set overscroll-behavior based on the scroll direction (#20011) (a3fc77b), closes #20010
- item-divider: update design to match native iOS (#20854) (d91e22d)
- item-sliding: account for swipe to go back gesture when opening item-options (#20777) (f23ac44), closes #20773
- list: show bottom border on last item in a list followed by a list (#20798) (7bc5191)
- modal: backdrop and box shadows no longer stack when opening multiple modals (#20801) (253cd96), closes #20800
- modal: backdrop is no longer tappable on card-style modal on smaller screens (#20802) (12932dd), closes #20783
- modal: properly apply border radius on card-style modal (#20852) (dff3816), closes #20851
- modal: properly remove safe area padding on card-modal (#20853) (71f1182), closes #20799
- modal: respect card-style modal spec for iPadOS (#20750) (75bae40), closes #20700
- react: expose correct type for CreateAnimation (#20775) (0897c3f), closes #20771
- refresher: properly dismiss refresher when completed synchronously (#20815) (b1a87c8), closes #20803
- segment: automatically expand width for scrollable segment buttons (#20763) (cdfd50b), closes #20566
- segment: scrollable segments only show scrollbar if they overflow (#20760) (ab146c9), closes #20758
- slides: check that mutation observer is defined for ssr (#20791) (2d5d251)
- textarea: properly adjust auto-grow textarea in scrolled content (#19776) (8bd5bac), closes #19193
- title: improve reliability of large title ios nav transition (#20861) (3bd6b5d)
- title: large title now inherits global color styling during nav transition (#20862) (321140f)
5.0.5
patchMarch 11 2020
Bug Fixes
- button: allow overflow to be overridden by the CSS variable (#20738) (7ecde36), closes #20726
- datetime: account for max property when hour, minute, or second is set to 0 (#20665) (2177461), closes #20652
- header: collapsable header should default to using content background (#20736) (f6c3ba7), closes #20691
- header: resolve undefined error on collapsible header when navigating quickly (#20728) (87a2721), closes #20725
- ios: large title animation now works properly in a modal (#20703) (ec4878a), closes #20696
- item: apply proper margin left for slotted icon in RTL (#20684) (d53595e), closes #20653
- label: text overflow for slotted headings (#20690) (4d34ce6), closes #17087
- modal: leave animation transitions modal completely out of viewport on ipad (#20702) (22d5256), closes #20697
- angular exclude components from ssr (#20674) (f64b142)
- modal: swipeable modal now works in firefox (#20714) (7d260b9), closes #20706
- overlays: prevent accidental dismiss of overlays when tapping screen twice (#20683) (b6c2a77), closes #20608
- segment: allow routerLink to work on segment buttons (#20682) (314dbb1), closes #20678
- segment: iOS mode segment now works on older Android devices (#20673) (44993b7), closes #20648
5.0.2
patchFebruary 26 2020
Bug Fixes
- ios: large title transition works properly in tabbed applications (#20555) (7187541), closes #20482
- menu: hardware back button now dismisses side menu if open in Cordova/Capacitor app (#20558) (6b2a929), closes #20559
- modal: allow swipe to close animation to be overridden (#20585) (8d3ce8d), closes #20577
- modal: card style modal now adds appropriate contrast (#20604) (b5310ef)
- modal: allow swipeable modal background to be overridden (#20584) (ad6fac8), closes #20572
- modal: swipeable modal styles only apply to ios (#20571) (3a2d828), closes #20569
- refresher: ensure that translate is cleaned up to avoid stacking context (#20621) (e3e5c69), closes #17949
- segment: segment functions properly on older versions of Android (#20554) (0224bed), closes #20466
- select: properly align text, add icon-inner and placeholder part (#20605) (926ac3f)
- slides: set height to 100% for vertical slides (#20603) (20af652), closes #17341
5.0.1
patchFebruary 19 2020
Bug Fixes
- button: reduce font size of icon only button in toolbar on iOS (#20547) (59fa340)
- card: inherit background in inner button (#20461) (c16de96), closes #20458
- fab: add close icon to internal icons for react (#20490) (c4fb314), closes #20489
- fab: show close icon on hover, focused, activated (#20497) (e42c85d)
- input: do not clear input if "Enter" key pressed (#20462) (89bf08b), closes #20442
- ios: clamp out of bounds values for swipe to go back (#20540) (dd32a5e), closes #20505
- menu: swipe gesture should not open menu when a modal is displayed (#20546) (3252c2f), closes #20467
- modal: presenting multiple card-style modals now adds border radius properly (#20476) (abf594a), closes #20475
- modal: prevent card style modal styles from being overridden (#20470) (86ab77a), closes #20469
- react: do a better job matching up route to sync (#20446) (c0aadd6), closes #20363
- react: do not remove pages when navigating between tabs (#20431) (b6fbe98), closes #20398
- react: icons with MD set should work in browser (#20463) (82670fe)
- react: update paths of tab buttons when href changes in ion buttons (#20480) (45d03ba), closes #20321
- searchbar: properly align placeholder (#20460) (4d6e15a), closes #20456
- segment: border radius applies to indicator on ios (#20541) (9b5854d), closes #20539
- segment: do not show ripple effect if disabled via config (#20542) (7a461c5), closes #20533
- segment: inner div no longer interferes with click events (#20522) (06b828b), closes #20381
- segment: only emit ionChange when user releases pointer from screen (#20495) (4d50064), closes #20500 #20257
- tab-bar: update ios icon and label design to match native (#20548) (34f8576)
5.0.0 Magnesium
majorFebruary 11 2020
Enjoy! 🔥
We recommend updating to version
4.11.10before updating to this version in order to see deprecation warnings related to your app in the developer console.
Run the following commands based on your project type:
# for an angular app
npm i @ionic/angular@latest --save
# for a react app
npm i @ionic/react@latest --save
npm i @ionic/react-router@latest --save
npm i ionicons@latest --save
# for a stencil / vanilla JS app
npm i @ionic/core@latest --save
CopyCopied
Then take a look at the Breaking Changes file for API changes.
Features
- alert: add support for textarea inputs (#16851) (b28cf02), closes #14153
- angular: expose Ionic Animations via AnimationController (#19745) (67a7e23)
- angular: expose Ionic Gestures via GestureController (#19864) (48a7662)
- angular: angular 9 support (#19515) (2344d0b)
- animation: animation identifiers (#19771) (7d41715), closes #19550
- animation: cubic-bezier easing conversion utility (experimental) (#19788) (96a5e60), closes #19789
- checkbox: add --checkmark-width variable (#19933) (c32a7bc), closes #16803
- components: improve button states and add new css properties (#19440) (9415929), closes #20213 #19965
- datetime: add custom timezone display property (#19519) (7b032c5), closes #19401
- modal: add card-style presentation with swipe to close gesture (#19428) (b3b3312), closes #18660
- radio: add --border-radius and --inner-border-radius variables (#20140) (a01c102)
- refresher: add iOS native refresher (#20037) (04e7c03), closes #18664
- refresher: add MD native refresher (#20096) (5b81bdf), closes #17316
- react: add Ionic Animations wrapper (experimental) (#20273) (b59d764)
- searchbar: add --box-shadow variable to style searchbar input (#19838) (1ab7066)
- segment-button: add --indicator-height property to segment button (#19653) (d76a503)
- segment: update design for iOS and MD spec (#19036) (dc66ce4), closes #18663
- select: add --placeholder-opacity and --placeholder-color, expose shadow parts (#19893) (bef0f53), closes #17446
- split-pane: convert to shadow component, add width, max-width, and min-width vars (#19754) (d80f455), closes #17088
- toast: expose shadow parts (#20146) (3b4988a)
- toggle: add --border-radius and --handle-border-radius variables (#20141) (02a46a1)
Bug Fixes
- action-sheet: allow scrollable action sheet with many options (#20145) (53fad97), closes #17311
- angular: correct path for angular projects (#20436) (fd9c7a9), closes #20435
- animation: add property conversions for CSS Animations (#20252), fixes #20251 (32a7401)
- animation: support css animation on older devices (#20020) (49c394c), closes #20017
- animation: track correctly when updating CSS Animation (#19813) (7bd4412)
- card: update background to use the same as item (#19602) (1a8b7a4)
- card: remove top padding of content in iOS if under header (#20223) (9232f16)
- components: use proper colors for button states and add back input highlight (#20278) (628db18), closes #20276
- components: inherit text indent in all components with text inherit (#20300) (767b005), closes #17786
- content: set fixed content to position absolute (#19867) (fce3e24), closes #17754
- content: resolve height inheritance issues (#20309) (09bef71), closes #20305
- content: only emit scroll events if enabled (#20401) (fd1b44a)
- gesture: release gesture when disabling (#19855) (21484f1), closes #19848
- header: avoid flicker on collapsible header load (#19682) (0a7aae2)
- header: avoid flicker when collapsing (#19850) (a3666dd), closes #19839
- header: support collapsible header with multiple toolbars (#19909) (fc4bb2d)
- header: translucent toolbars now work with collapsible header (#19774) (b642b53), closes #19773
- header: header opacity properly resets on collapsible titles (#20202) (8e11f79)
- header: fix race condition in collapsible header (#20334) (215d55f)
- header: backdrop filter no longer distorts content with collapsible header (#20388) (11d3945), closes #20385
- icons: fix the ellipsis fill in ionicons (#20137) (9318d24)
- item: remove unneeded box-shadow CSS variable (#20412) (a6764c4), closes #20392
- ios: translucent toolbar blur no longer obscures entering page toolbar content (#20314) (e580b88), closes #19158
- label: remove subpixel font-size to prevent visual glitches (#20415) (3d6f287), closes #20407
- modal: prevent double dismiss via gesture and backdrop tap on card-style modal (#20203) (5b0400d)
- modal: card-style modal now opens at full width on larger devices (#20256), fixes #20255 (443cbd9)
- modal: account for safe area on devices with a notch (#20072) (1cabb53)
- nav-params: set generic type on navigation parameters get() (#19195) (504051d)
- picker: pass selected value to handler on dismiss (#20042) (6e0b9c4), closes #20036
- picker: pass data and role to dismiss (#19787) (7988720), closes #18454
- picker: include showBackdrop in interface (#20301) (33186ba), closes #18893
- picker: pick correct option at low velocities (#19660) (39d1262), closes #19659
- radio: do not clear radio group value from radio (#20343) (ff78e6e), closes #20323
- radio: set default radio value if undefined (#20329) (eb57723)
- react: export proper types of animations and gestures (#20311) (0034088)
- react: fire lifecycle events on initial render, fixes #20071 (2dcf3ee)
- react: updating icon type and add caret to internal icons (#20216) (dc78f98)
- searchbar: set inputmode default to undefined (#20080) (6612604), closes #20074
- searchbar: use back button config value for cancel icon (#19353) (3d6f3b9)
- segment: add activated class directly to segment button (#20400) (e8886e9)
- segment: clicking disabled button no longer adds ripple to active button (#20254), fixes #20253 (f896821)
- segment: allow background to be set on iOS segment in a toolbar (#20350) (0f31624)
- ssr: add reflect content-id attribute to applicable properties (#20169) (3aa47e6)
- tabs: preserve route navigation extras when changing tabs (#18493) (4c8f32f), closes #18717
- textarea: remove padding from textarea placeholder (#19694) (f63d37a), closes #19616
- title: only animate large title if back button is in start slot (#19846) (cace1b3), closes #19840
- title: add correct safe area to large title nav transition (#20029) (300d543), closes #20028
- toast: inherit color in cancel button for a toast with color (#20299) (7b44ae2), closes #20139
- toast: call button handler on cancel (#19793) (420aa66), closes #19791
Code Refactoring
To see more releases, visit GitHub.