How to sort grid columns on client side?

How to sort columns in grid without asking server backend?
Just want to reorder rows on columns header click.

How to prevent full reload data from server on change sort column?

public class SmartGrid3Entity {

    private int id;
    private int col01;

    public SmartGrid3Entity(int i) {
        this.id = i;
        this.col01 = (int) (100 * Math.random() * i);
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getCol01() {
        return col01;
    }

    public void setCol01(int col01) {
        this.col01 = col01;
    }

}

        Grid<SmartGrid3Entity> grid = new Grid<>();

        ArrayList<SmartGrid3Entity> dataList = new ArrayList<>();
        for (int i = 0; i < 100; i++) dataList.add(new SmartGrid3Entity(i));
        grid.setItems(dataList);

        Grid.Column<SmartGrid3Entity> columnId = grid.addComponentColumn(smartGrid3Entity -> new Text(String.valueOf(smartGrid3Entity.getId())))
                .setWidth("100px").setResizable(true)
                .setSortable(true)
                .setComparator(Comparator.comparingInt(SmartGrid3Entity::getId))
                .setKey("id1");

        Grid.Column<SmartGrid3Entity> columnCol01 = grid.addColumn(SmartGrid3Entity::getCol01)
                .setWidth("100px").setResizable(true)
                .setSortable(true)
                .setKey("col01")
                .setComparator(Comparator.comparingInt(SmartGrid3Entity::getCol01));

        HeaderRow headerRow = grid.appendHeaderRow();
        headerRow.getCell(columnId).setComponent(new Label("Id1"));
        headerRow.getCell(columnCol01).setComponent(new Label("Col01"));

Every sort change is loading about 28 Kb from server - full data reload.

Hm… If i update first column to generate on simple entity’s field then it works normally; About 4-5 kilobytes.

        //Grid.Column<SmartGrid3Entity> columnId = grid.addComponentColumn(smartGrid3Entity -> new Text(String.valueOf(smartGrid3Entity.getId())))
        Grid.Column<SmartGrid3Entity> columnId = grid.addColumn(SmartGrid3Entity::getId)

Well i don’t understand how to use Components as Grid cell and handle traffic economy? Is it possible?
Vaadin 15.0.0