Releases: rdlabo-dev/ionic-theme-ios26
Release list
v9.1.0
Overview
v9.1.0 makes the theme easier to reuse, extend, and override in downstream applications. The iOS 26 glass appearance and interaction states are intended to remain unchanged; the main improvement is that more styling now flows through Ionic's public customization APIs and the normal CSS cascade.
Theme customization and reuse
- Moved eligible styling from Shadow Parts to documented Ionic CSS custom properties across buttons, FABs, sheets, popovers, ranges, search bars, segments, toasts, and toggles. Backgrounds, shadows, borders, padding, indicator styles, and control-state colors are now exposed through Ionic's normal customization path wherever a public property exists. Shadow Parts remain where no equivalent property is available. (#133)
- Reduced
!importantusage in the shipped theme styles from 13 declarations to one. The remaining declaration intentionally stabilizes centeredion-searchbarpadding before hydration so Ionic'stransition: alldoes not animate through an incorrect intermediate value. (#133) - Generalized the internal glass-surface mixins so background, box shadow, and border layers can be applied independently. This lets components share the same glass treatment without overriding Ionic properties they do not own. (#133)
- Preserved Ionic's standard color behavior: explicit
colorvalues on inset-list notes, header labels, and header icons now take precedence, while the theme defaults still apply when no color is specified. (#135, #136)
More robust component behavior
- Input and textarea counters are now treated as structured-list support text, so counters remain visible and list borders are placed correctly. This covers both the built-in input counter and
counterFormatteroutput. (#130) - Structured group styling is now scoped to direct children of each inset list. A single
ion-radio-groupcan span multiple inset lists without nested groups receiving duplicate boundaries. (#131) - Colored disabled buttons now retain Ionic's base and contrast colors, and brightness-based styling is applied only to enabled solid submit buttons. Disabled buttons therefore keep the expected contrast and opacity. (#136, #137)
- Button spacing is now scoped directly to enabled iOS toolbars, preserving the mode guard and avoiding unintended margins in nested or unrelated header/footer structures. (#138)
For maintainers and contributors
- Added gated package candidates: an administrator can publish a CI-verified pull-request commit to the
betanpm dist-tag with/beta, while verifiedmaincandidates publish tonext. Candidate publishing cannot updatelatest. (#132)
No markup migration is expected for this release. Existing visuals, color states, RTL behavior, and interactions were kept compatible and checked with builds, component tests, computed-style checks, and light/dark screenshot coverage.
Full Changelog: v9.0.2...v9.1.0
v9.1.0-1
v9.1.0-0
What's Changed
- fix: support counters in structured lists by @rdlabo in #130
- ci: publish gated beta and next candidates by @rdlabo in #132
- fix: support radio groups across inset lists by @rdlabo in #131
- refactor: prefer CSS custom properties over Shadow Parts by @rdlabo in #133
Commits
- refactor: prefer CSS custom properties over Shadow Parts (#133) 466e5b6
- fix: support radio groups across inset lists (#131) 2aeffc8
- ci: allow maintainers to request beta releases ad205ba
- ci: separate beta publishing from notifications 75dc35c
- fix: keep beta gate failures non-blocking 610dd7e
- ci: acknowledge administrator beta requests 62c7325
- fix: restrict prerelease publishing paths c24090b
- ci: publish gated beta and next candidates (#132) 0c6bf33
- fix: support counters in structured lists (#130) eb2112a
v9.0.2
What's Changed
- docs: link README guides to docs.rdlabo.dev by @rdlabo in #126
- fix: support helper and error text outside inset lists by @rdlabo in #127
- fix: apply inset styles to all list groups by @rdlabo in #128
Commits
- fix: apply inset styles to all list groups (#128) f371d73
- fix: support helper and error text outside inset lists (#127) 4110d79
- docs: link README guides to docs.rdlabo.dev (#126) 7e71fc5
v9.0.1
Overview
This patch completes the component updates that were left out of the previous iOS 26 theme release.
Changed
- Added helper and error text examples for:
ion-selection-checkboxion-toggleion-radio-group
- Integrated
ion-selectsupporting text with inset-list dividers. - Positioned
ion-radio-groupsupporting text below its options. - Preserved iOS inset-list spacing, safe-area insets, and rounded corners.
Compatibility
This release contains no breaking changes. No migration is required.
What's Changed
- feat: support helper and error text for select, checkbox, toggle, and radio group (#125)
- docs: mark screenshot for overview
- docs: clarify v9 migration path
Full Changelog: v9.0.0...v9.0.1
v9.0.0
Ionic Theme iOS26 v9.0.0
This release aligns the theme's major version with Ionic 9 while continuing to support Ionic 8.
If you are upgrading from a version released last month or earlier, v9 also includes the UI features and fixes introduced on the way through v3.x.
Compatibility
@ionic/core >=8.8.1 <10- Ionic 8 and Ionic 9 demos and visual regression coverage
npm install @rdlabo/ionic-theme-ios26@^9Breaking change for users upgrading from v2.x or earlier
Rename the Inset List section-header class:
- <ion-item-group class="header-item-group">
+ <ion-item-group class="item-group-header">The old class has been removed. If you already use v3.x, no additional application-side markup change is required for v9.0.0.
See the migration guide for details.
Included since the earlier releases
- Two-line
ion-itemlayouts with Supporting text - Natural
helperTextanderrorTextlayouts for Inputs and Textareas fill="outline"support in Ionic'siosmode- Shared markup and documented integration with
@rdlabo/ionic-theme-md3 - Ionic 8 and Ionic 9 visual regression tests in Light and Dark modes
- Refined dividers, icon-only Buttons, navigation, and Overlay presentation
See the complete release overview
The release article includes mobile screenshots, markup examples, compatibility details, and the full list of changes across both themes:
Bringing iOS 26 and Material Design 3 to Ionic: Both Themes Reach v9
Full Changelog: v3.1.0...v9.0.0
v3.1.0
What's Changed
- docs: distinguish Ionic Angular import paths by @rdlabo in #122
- docs: use stable release links by @rdlabo in #121
- docs: mention ion item group ESLint rule by @rdlabo in #123
- feat: improve iOS input outlines and supporting text by @rdlabo in #124
Commits
- Merge branch 'main' of github.com:rdlabo-dev/ionic-theme-ios26 f08039a
- feat: improve iOS input outlines and supporting text (#124) 649cd0f
- Merge branch 'main' of github.com:rdlabo-dev/ionic-theme-ios26 dbc5a80
- chore 9f5d884
- docs: link package homepage to documentation aaf4c51
- docs: add maintainer information 9e329e0
- docs: mention ion item group ESLint rule (#123) 29d325f
- docs: use stable release links (#121) 448d03d
- docs: distinguish Ionic Angular import paths (#122) f4f6947
v3.0.0
Ionic Theme iOS 26 v3.0.0
This release improves structured inset lists, floating action button positioning, Ionic 9 compatibility coverage, and public documentation.
Breaking change
The section-header class for ion-item-group has been renamed:
- <ion-item-group class="header-item-group">
+ <ion-item-group class="item-group-header">The old class is no longer styled. Update shared markup used with @rdlabo/ionic-theme-md3 at the same time.
What’s new
- Added structured two-line inset items using direct, unslotted ion-label and ion-note children.
- Improved inset-list markup compatibility with the MD3 theme so both modes can share one template.
- Corrected floating action button positioning alongside side menus and aligned expanded FAB lists.
- Added tested demo and screenshot coverage for Ionic 8 and Ionic 9.
- Added complete dual-theme setup guidance, including Sass import order, dark mode, and platform-specific transitions.
- Reorganized the public documentation around installation, features, special markup, migration, and experimental animations.
Compatibility
- Requires @ionic/core >=8.8.1 <10.
- Applications using @ionic/core <8.8.1 should remain on @rdlabo/ionic-theme-ios26@2.2.1 or upgrade Ionic.
See the migration guide (https://github.com/rdlabo-dev/ionic-theme-ios26/blob/v3.0.0/docs/migration.md) for upgrade details.
Full changelog: v2.3.2...v3.0.0
v3.0.0-1
What's Changed
- fix(list): support two-line content in inset items by @rdlabo in #115
- docs: organize iOS26 theme guides by @rdlabo in #116
Commits
- docs: organize iOS26 theme guides (#116) 76fe472
- fix(list): support two-line content in inset items (#115) baba6cf
- fix(ci): grant PR comment permissions f00f2fa
v3.0.0-0
What's Changed
- chore: set "private": false in package.json by @rdlabo in #107
- fix(demo): make demo tests pass and run them in CI by @rdlabo in #106
- ci: speed up demo lint CI (npm + .angular cache) by @rdlabo in #108
- Point READMEs to centralized documentation by @rdlabo in #109
- docs: split README into package guides with omit markers by @rdlabo in #110
- fix(fab): correct positioning around menus and fab lists by @rdlabo in #112
- test(e2e): compare Ionic 8 and 9 screenshots by @rdlabo in #113
- docs: update demo URLs by @rdlabo in #114
Commits
- docs: update demo URLs (#114) 87089aa
- test(e2e): compare Ionic 8 and 9 screenshots (#113) a01967c
- fix(fab): correct positioning around menus and fab lists (#112) b222b97
- docs: split README into package guides with omit markers (#110) 8ee40a1
- Point READMEs to centralized documentation (#109) dd4f534
- Update references after GitHub organization transfer 4b5f632
- Merge pull request #108 from rdlabo-team/chore/ci-cache-speedup a9deb20
- ci: unify lint workflow trigger (PR + push on main) fa40aec
- ci: speed up demo lint CI with npm and .angular cache (node 24) b471202
- Merge pull request #106 from rdlabo-team/fix/demo-tests-ci abfb157
- ci: unpin node to 24 to match npm 11.7 lockfile 9910f81
- chore: sync package-lock.json after ESLint version bump 4f12d5d
- chore: align ESLint config and versions to winecode standard 9c04531
- Merge pull request #107 from rdlabo-team/chore/set-private-field 6bb0754
- chore: set "private": false in package.json b830c7b
- fix(demo): pin @playwright/test to 1.58.2 to match CI container image 5dae6f7
- test(demo): migrate unit tests from Karma+Jasmine to Vitest(jsdom) 4550762
- ci(lint): install and build root package before demo tests a2bbe1b
- fix(demo): correct docs spec class name and run demo tests in CI b3d1624