Skip to content

Conversation

rugoncalves
Copy link

@rugoncalves rugoncalves commented Aug 28, 2025

What is the current behavior?

The existing grid component (ion-grid, ion-row, and ion-col) in Ionic was developed several years ago and has not received significant updates since then. As a result, it does not leverage modern CSS features. For example, the gutter (spacing) between columns is implemented using the border property, which is an outdated technique.

What is the new behavior?

  • --ion-grid-gap: this new CSS variable, will indicate the gap size in the grid. Defaults to 0px - the current value.
  • ion-col: has a new way to calculate the width of the column. Additionally a new property order (and responsive variants) was added, and will control the order of the column.
  • ion-row: uses the newly introduced custom property --ion-grid-gap. This property will indicate the gap size in the grid.

Does this introduce a breaking change?

  • Yes
  • No

The properties pull and push from ion-col, have been removed. The functionality achieved with them, is now achieved with the new property order and the existing size. More information and migration examples can be read in BREAKING.md file.

Other information

@rugoncalves rugoncalves requested a review from a team as a code owner August 28, 2025 11:04
Copy link

vercel bot commented Aug 28, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
ionic-framework Ready Ready Preview Comment Sep 12, 2025 11:15am

@github-actions github-actions bot added package: core @ionic/core package package: angular @ionic/angular package package: vue @ionic/vue package labels Aug 28, 2025
Copy link
Member

@ShaneK ShaneK left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking pretty good! Just a few issues I found

display: flex;

flex-wrap: wrap;

gap: var(--ion-grid-gap, 0px);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will always be 0px, I believe, since you're setting this var and using it in the same block. Is this intended? Seems redundant.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree and changed.

Copy link
Member

@ShaneK ShaneK Sep 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way you resolved this is sort of the opposite of what I expected. I think you should leave the default and remove the --ion-grid-gap definition. Defining it in this block means it has to be overwritten here (specifically, on each row individually) and can't be inherited from anywhere else in the app, which sorta subverts the cascading part of cascading style sheets. I think you should remove the initial definition and leave the 0px fallback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package: angular @ionic/angular package package: core @ionic/core package package: vue @ionic/vue package
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants