Skip to content

Commit 021712b

Browse files
chore(): update BREAKING.md to prepare for Ionic 8 development (ionic-team#28360)
Issue number: Internal --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - v7 breaking changes moved to legacy file. - New v8 section added to main breaking changes list. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->
1 parent ed7a5e5 commit 021712b

File tree

2 files changed

+334
-330
lines changed

2 files changed

+334
-330
lines changed

BREAKING.md

+3-330
Original file line numberDiff line numberDiff line change
@@ -4,338 +4,11 @@ This is a comprehensive list of the breaking changes introduced in the major ver
44

55
## Versions
66

7-
- [Version 7.x](#version-7x)
7+
- [Version 8.x](#version-8x)
8+
- [Version 7.x](./BREAKING_ARCHIVE/v7.md)
89
- [Version 6.x](./BREAKING_ARCHIVE/v6.md)
910
- [Version 5.x](./BREAKING_ARCHIVE/v5.md)
1011
- [Version 4.x](./BREAKING_ARCHIVE/v4.md)
1112
- [Legacy](https://github.com/ionic-team/ionic-v3/blob/master/CHANGELOG.md)
1213

13-
## Version 7.x
14-
15-
- [Browser and Platform Support](#version-7x-browser-platform-support)
16-
- [Components](#version-7x-components)
17-
- [Accordion Group](#version-7x-accordion-group)
18-
- [Action Sheet](#version-7x-action-sheet)
19-
- [Back Button](#version-7x-back-button)
20-
- [Button](#version-7x-button)
21-
- [Card Header](#version-7x-card-header)
22-
- [Checkbox](#version-7x-checkbox)
23-
- [Datetime](#version-7x-datetime)
24-
- [Input](#version-7x-input)
25-
- [Item](#version-7x-item)
26-
- [Modal](#version-7x-modal)
27-
- [Overlays](#version-7x-overlays)
28-
- [Picker](#version-7x-picker)
29-
- [Radio Group](#version-7x-radio-group)
30-
- [Range](#version-7x-range)
31-
- [Searchbar](#version-7x-searchbar)
32-
- [Segment](#version-7x-segment)
33-
- [Select](#version-7x-select)
34-
- [Slides](#version-7x-slides)
35-
- [Textarea](#version-7x-textarea)
36-
- [Toggle](#version-7x-toggle)
37-
- [Virtual Scroll](#version-7x-virtual-scroll)
38-
- [Config](#version-7x-config)
39-
- [Types](#version-7x-types)
40-
- [Overlay Attribute Interfaces](#version-7x-overlay-attribute-interfaces)
41-
- [JavaScript Frameworks](#version-7x-javascript-frameworks)
42-
- [Angular](#version-7x-angular)
43-
- [React](#version-7x-react)
44-
- [Vue](#version-7x-vue)
45-
- [CSS Utilities](#version-7x-css-utilities)
46-
- [hidden attribute](#version-7x-hidden-attribute)
47-
48-
<h2 id="version-7x-browser-platform-support">Browser and Platform Support</h2>
49-
50-
This section details the desktop browser, JavaScript framework, and mobile platform versions that are supported by Ionic 7.
51-
52-
**Minimum Browser Versions**
53-
| Desktop Browser | Supported Versions |
54-
| --------------- | ----------------- |
55-
| Chrome | 79+ |
56-
| Safari | 14+ |
57-
| Firefox | 70+ |
58-
| Edge | 79+ |
59-
60-
**Minimum JavaScript Framework Versions**
61-
62-
| Framework | Supported Version |
63-
| --------- | --------------------- |
64-
| Angular | 14+ |
65-
| React | 17+ |
66-
| Vue | 3.0.6+ |
67-
68-
**Minimum Mobile Platform Versions**
69-
70-
| Platform | Supported Version |
71-
| -------- | ---------------------- |
72-
| iOS | 14+ |
73-
| Android | 5.1+ with Chromium 79+ |
74-
75-
<h2 id="version-7x-components">Components</h2>
76-
77-
<h4 id="version-7x-accordion-group">Accordion Group</h4>
78-
79-
- `ionChange` is no longer emitted when the `value` of `ion-accordion-group` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking or tapping the accordion header.
80-
81-
- Accordion Group no longer automatically adjusts the `value` property when passed an array and `multiple="false"`. Developers should update their apps to ensure they are using the API correctly.
82-
83-
<h4 id="version-7x-action-sheet">Action Sheet</h4>
84-
85-
- Action Sheet is updated to align with the design specification.
86-
87-
**Design tokens**
88-
89-
| Token | Previous Value | New Value |
90-
| ---------- | -------------- | --------- |
91-
| `--height` | `100%` | `auto` |
92-
93-
<h4 id="version-7x-button">Button</h4>
94-
95-
- Button is updated to align with the design specification for iOS.
96-
97-
**Design tokens**
98-
99-
| Token | Previous Value | New Value |
100-
| ---------------------------------- | -------------- | --------- |
101-
| `$button-ios-letter-spacing` | `-0.03em` | `0` |
102-
| `$button-ios-clear-letter-spacing` | `0` | Removed |
103-
| `$button-ios-height` | `2.8em` | `3.1em` |
104-
| `$button-ios-border-radius` | `10px` | `14px` |
105-
| `$button-ios-large-height` | `2.8em` | `3.1em` |
106-
| `$button-ios-large-border-radius` | `12px` | `16px` |
107-
108-
<h4 id="version-7x-back-button">Back Button</h4>
109-
110-
- Back Button is updated to align with the design specification for iOS.
111-
112-
**Design tokens**
113-
114-
| Token | Previous Value | New Value |
115-
| ------------------- | -------------- | --------- |
116-
| `--icon-margin-end` | `-5px` | `1px` |
117-
| `--icon-font-size` | `1.85em` | `1.6em` |
118-
119-
<h4 id="version-7x-card-header">Card Header</h4>
120-
121-
- The card header has ben changed to a flex container with direction set to `column` (top to bottom). In `ios` mode the direction is set to `column-reverse` which results in the subtitle displaying on top of the title.
122-
123-
<h4 id="version-7x-checkbox">Checkbox</h4>
124-
125-
- `ionChange` is no longer emitted when the `checked` property of `ion-checkbox` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking or tapping the checkbox.
126-
127-
- The `--background` and `--background-checked` CSS variables have been renamed to `--checkbox-background` and `--checkbox-background-checked` respectively.
128-
129-
<h4 id="version-7x-datetime">Datetime</h4>
130-
131-
- `ionChange` is no longer emitted when the `value` property of `ion-datetime` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking or tapping a date.
132-
133-
- Datetime no longer automatically adjusts the `value` property when passed an array and `multiple="false"`. Developers should update their apps to ensure they are using the API correctly.
134-
135-
- Datetime no longer incorrectly reports the time zone when `value` is updated. Datetime does not manage time zones, so any time zone information provided is ignored.
136-
137-
- Passing the empty string to the `value` property will now error as it is not a valid ISO-8601 value.
138-
139-
- The haptics when swiping the wheel picker are now enabled only on iOS.
140-
141-
<h4 id="version-7x-input">Input</h4>
142-
143-
- `ionChange` is no longer emitted when the `value` of `ion-input` is modified externally. `ionChange` is only emitted from user committed changes, such as typing in the input and the input losing focus, clicking the clear action within the input, or pressing the "Enter" key.
144-
145-
- If your application requires immediate feedback based on the user typing actively in the input, consider migrating your event listeners to using `ionInput` instead.
146-
147-
- The `debounce` property has been updated to control the timing in milliseconds to delay the event emission of the `ionInput` event after each keystroke. Previously it would delay the event emission of `ionChange`.
148-
149-
- The `debounce` property's default value has changed from `0` to `undefined`. If `debounce` is undefined, the `ionInput` event will fire immediately.
150-
151-
- The `detail` payload for the `ionInput` event now contains an object with the current `value` as well as the native event that triggered `ionInput`.
152-
153-
**Design tokens**
154-
155-
| Token | Previous Value | New Value |
156-
| ----------------------- | -------------- | --------- |
157-
| `--placeholder-opacity` | `0.5` | `0.6` |
158-
159-
<h4 id="version-7x-item">Item</h4>
160-
161-
**Design tokens**
162-
163-
iOS:
164-
165-
| Token | Previous Value | New Value |
166-
| --------------------- | -------------- | --------- |
167-
| `$item-ios-font-size` | `17px` | `16px` |
168-
| `--inner-padding-end` | `10px` | `16px` |
169-
| `--padding-start` | `20px` | `16px` |
170-
171-
<h4 id="version-7x-modal">Modal</h4>
172-
173-
- The `swipeToClose` property has been removed in favor of `canDismiss`.
174-
- The `canDismiss` property now defaults to `true` and can no longer be set to `undefined`.
175-
176-
<h4 id="version-7x-overlays">Overlays</h4>
177-
178-
Ionic now listens on the `keydown` event instead of the `keyup` event when determining when to dismiss overlays via the "Escape" key. Any applications that were listening on `keyup` to suppress this behavior should listen on `keydown` instead.
179-
180-
<h4 id="version-7x-picker">Picker</h4>
181-
182-
- The `refresh` key has been removed from the `PickerColumn` interface. Developers should use the `columns` property to refresh the `ion-picker` view.
183-
184-
<h4 id="version-7x-radio-group">Radio Group</h4>
185-
186-
- `ionChange` is no longer emitted when the `value` of `ion-radio-group` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking or tapping an `ion-radio` in the group.
187-
188-
<h4 id="version-7x-range">Range</h4>
189-
190-
- Range is updated to align with the design specification for supported modes.
191-
192-
**Design tokens**
193-
194-
iOS:
195-
196-
| Token | Previous Value | New Value |
197-
| --------------------------------- | ----------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
198-
| `--bar-border-radius` | `0px` | `$range-ios-bar-border-radius` (`2px` default) |
199-
| `--knob-size` | `28px` | `$range-ios-knob-width` (`26px` default) |
200-
| `$range-ios-bar-height` | `2px` | `4px` |
201-
| `$range-ios-bar-background-color` | `rgba(var(--ion-text-color-rgb, 0, 0, 0), .1)` | `var(--ion-color-step-900, #e6e6e6)` |
202-
| `$range-ios-knob-box-shadow` | `0 3px 1px rgba(0, 0, 0, .1), 0 4px 8px rgba(0, 0, 0, .13), 0 0 0 1px rgba(0, 0, 0, .02)` | `0px 0.5px 4px rgba(0, 0, 0, 0.12), 0px 6px 13px rgba(0, 0, 0, 0.12)` |
203-
| `$range-ios-knob-width` | `28px` | `26px` |
204-
205-
- `ionChange` is no longer emitted when the `value` of `ion-range` is modified externally. `ionChange` is only emitted from user committed changes, such as dragging and releasing the range knob or selecting a new value with the keyboard arrows.
206-
- If your application requires immediate feedback based on the user actively dragging the range knob, consider migrating your event listeners to using `ionInput` instead.
207-
208-
- The `debounce` property's value value has changed from `0` to `undefined`. If `debounce` is undefined, the `ionInput` event will fire immediately.
209-
210-
- Range no longer clamps assigned values within bounds. Developers will need to validate the value they are assigning to `ion-range` is within the `min` and `max` bounds when programmatically assigning a value.
211-
212-
- The `name` property defaults to `ion-r-${rangeIds++}` where `rangeIds` is a number that is incremented for every instance of `ion-range`.
213-
214-
<h4 id="version-7x-searchbar">Searchbar</h4>
215-
216-
- `ionChange` is no longer emitted when the `value` of `ion-searchbar` is modified externally. `ionChange` is only emitted from user committed changes, such as typing in the searchbar and the searchbar losing focus or pressing the "Enter" key.
217-
218-
- If your application requires immediate feedback based on the user typing actively in the searchbar, consider migrating your event listeners to using `ionInput` instead.
219-
220-
- The `debounce` property has been updated to control the timing in milliseconds to delay the event emission of the `ionInput` event after each keystroke. Previously it would delay the event emission of `ionChange`.
221-
222-
- The `debounce` property's default value has changed from 250 to `undefined`. If `debounce` is undefined, the `ionInput` event will fire immediately.
223-
224-
- The `detail` payload for the `ionInput` event now contains an object with the current `value` as well as the native event that triggered `ionInput`.
225-
226-
**Design tokens**
227-
228-
| Token | Previous Value | New Value |
229-
| ----------------------- | -------------- | --------- |
230-
| `--placeholder-opacity` | `0.5` | `0.6` |
231-
232-
233-
<h4 id="version-7x-segment">Segment</h4>
234-
235-
- `ionChange` is no longer emitted when the `value` of `ion-segment` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking a segment button or dragging to activate a segment button.
236-
237-
- The type signature of `value` supports `string | undefined`. Previously the type signature was `string | null | undefined`.
238-
- Developers needing to clear the checked segment item should assign a value of `''` instead of `null`.
239-
240-
<h4 id="version-7x-select">Select</h4>
241-
242-
- `ionChange` is no longer emitted when the `value` of `ion-select` is modified externally. `ionChange` is only emitted from user committed changes, such as confirming a selected option in the select's overlay.
243-
244-
- The `icon` CSS Shadow Part now targets an `ion-icon` component.
245-
246-
**Design tokens**
247-
248-
| Token | Previous Value | New Value |
249-
| ----------------------- | -------------- | --------- |
250-
| `--placeholder-opacity` | `0.33` | `0.6` |
251-
252-
<h4 id="version-7x-slides">Slides</h4>
253-
254-
`ion-slides`, `ion-slide`, and the `IonicSwiper` plugin have been removed from Ionic.
255-
256-
Developers using these components will need to migrate to using Swiper.js directly, optionally using the `IonicSlides` plugin. Guides for migration and usage are linked below:
257-
258-
- [Angular](https://ionicframework.com/docs/angular/slides)
259-
- [React](https://ionicframework.com/docs/react/slides)
260-
- [Vue](https://ionicframework.com/docs/vue/slides)
261-
262-
<h4 id="version-7x-textarea">Textarea</h4>
263-
264-
- `ionChange` is no longer emitted when the `value` of `ion-textarea` is modified externally. `ionChange` is only emitted from user committed changes, such as typing in the textarea and the textarea losing focus.
265-
266-
- If your application requires immediate feedback based on the user typing actively in the textarea, consider migrating your event listeners to using `ionInput` instead.
267-
268-
- The `debounce` property has been updated to control the timing in milliseconds to delay the event emission of the `ionInput` event after each keystroke. Previously it would delay the event emission of `ionChange`.
269-
270-
- The `debounce` property's default value has changed from `0` to `undefined`. If `debounce` is undefined, the `ionInput` event will fire immediately.
271-
272-
- `ionInput` dispatches an event detail of `null` when the textarea is cleared as a result of `clear-on-edit="true"`.
273-
274-
- The `detail` payload for the `ionInput` event now contains an object with the current `value` as well as the native event that triggered `ionInput`.
275-
276-
**Design tokens**
277-
278-
| Token | Previous Value | New Value |
279-
| ----------------------- | -------------- | --------- |
280-
| `--placeholder-opacity` | `0.5` | `0.6` |
281-
282-
283-
<h4 id="version-7x-toggle">Toggle</h4>
284-
285-
- `ionChange` is no longer emitted when the `checked` property of `ion-toggle` is modified externally. `ionChange` is only emitted from user committed changes, such as clicking the toggle to set it on or off.
286-
287-
- The `--background` and `--background-checked` variables have been renamed to `--track-background` and `--track-background-checked`, respectively.
288-
289-
<h4 id="version-7x-virtual-scroll">Virtual Scroll</h4>
290-
291-
`ion-virtual-scroll` has been removed from Ionic.
292-
293-
Developers using the component will need to migrate to a virtual scroll solution provided by their framework:
294-
295-
- [Angular](https://ionicframework.com/docs/angular/virtual-scroll)
296-
- [React](https://ionicframework.com/docs/react/virtual-scroll)
297-
- [Vue](https://ionicframework.com/docs/vue/virtual-scroll)
298-
299-
Any references to the virtual scroll types from `@ionic/core` have been removed. Please remove or replace these types: `Cell`, `VirtualNode`, `CellType`, `NodeChange`, `HeaderFn`, `ItemHeightFn`, `FooterHeightFn`, `ItemRenderFn` and `DomRenderFn`.
300-
301-
<h2 id="version-7x-config">Config</h2>
302-
303-
- `innerHTMLTemplatesEnabled` defaults to `false`. Developers who wish to use the `innerHTML` functionality inside of `ion-alert`, `ion-infinite-scroll-content`, `ion-loading`, `ion-refresher-content`, and `ion-toast` must set this config to `true` and properly sanitize their content.
304-
305-
<h2 id="version-7x-types">Types</h2>
306-
307-
<h4 id="version-7x-overlay-attribute-interfaces">Overlay Attribute Interfaces</h4>
308-
309-
`ActionSheetAttributes`, `AlertAttributes`, `AlertTextareaAttributes`, `AlertInputAttributes`, `LoadingAttributes`, `ModalAttributes`, `PickerAttributes`, `PopoverAttributes`, and `ToastAttributes` have been removed. Developers should use `{ [key: string]: any }` instead.
310-
311-
<h2 id="version-7x-javascript-frameworks">JavaScript Frameworks</h2>
312-
313-
<h4 id="version-7x-angular">Angular</h4>
314-
315-
- Angular v14 is now required to use `@ionic/angular` and `@ionic/angular-server`. Upgrade your project to Angular v14 by following the [Angular v14 update guide](https://update.angular.io/?l=3&v=13.0-14.0).
316-
317-
- `null` values on form components will no longer be converted to the empty string (`''`) or `false`. This impacts `ion-checkbox`, `ion-datetime`, `ion-input`, `ion-radio`, `ion-radio-group`, `ion-range`, `ion-searchbar`, `ion-segment`, `ion-select`, `ion-textarea`, and `ion-toggle`.
318-
319-
- The dev-preview `environmentInjector` property has been removed from `ion-tabs` and `ion-router-outlet`. Standalone component routing is now available without additional custom configuration. Remove the `environmentInjector` property from your `ion-tabs` and `ion-router-outlet` components.
320-
321-
<h4 id="version-7x-react">React</h4>
322-
323-
`@ionic/react` and `@ionic/react-router` no longer ship a CommonJS entry point. Instead, only an ES Module entry point is provided for improved compatibility with Vite.
324-
325-
<h4 id="version-7x-vue">Vue</h4>
326-
327-
`@ionic/vue` and `@ionic/vue-router` no longer ship a CommonJS entry point. Instead, only an ES Module entry point is provided for improved compatibility with Vite.
328-
329-
<h2 id="version-7x-css-utilities">CSS Utilities</h2>
330-
331-
<h4 id="version-7x-hidden-attribute">`hidden` attribute</h4>
332-
333-
The `[hidden]` attribute has been removed from Ionic's global stylesheet. The `[hidden]` attribute can continue to be used, but developers will get the [native `hidden` implementation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/hidden) instead. The main difference is that the native implementation is easier to override using `display` than Ionic's implementation.
334-
335-
Developers can add the following CSS to their global stylesheet if they need the old behavior:
336-
337-
```css
338-
[hidden] {
339-
display: none !important;
340-
}
341-
```
14+
## Version 8.x

0 commit comments

Comments
 (0)