4 digits 7s display + 74HC595

CrossRoads:
I don't see how. You have all four cathodes turned all the time

Yes, BTW they are common anode displays

This seems to work:

void update_display() { 
  

  for(int j = 0;j<4;j++)
  {


    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, digit[j]); 	
    digitalWrite(latchPin, HIGH);	
    digitalWrite(digits[j], HIGH);          
    delay(1);    
    digitalWrite(digits[j], LOW);          
  }
}

The problem is brightness gets too low which makes me think it is something wrong.