I had two Samsung flagship phones, one (S20FE) had an optical fingerprint reader and the other (S22) had an ultrasonic one. Both of them somewhat regularly failed to read my finger, were slower than a fingerprint reader on the power button and are more expensive/complex to build. They won’t work with cheap 3rd party screen replacements and some screen protectors as well.
Meanwhile my $90 Android phone has a fingerprint reader on the power button. It never fails and I never have to perfectly place my finger on the sensor area to get it to work. It just seems like the perfect place to put a fingerprint sensor, so why do phone manufacturers keep using in-display fingerprint readers over the cheaper alternative?
In my experience iPhone FaceID works fine at night, with brightness all the way down. It shines infrared at you (you can vaguely see some light red emitting from next to the camera, some bleed from the infrared) and then captures that with the camera. It might also use LiDAR, I’m not totally sure. It even unlocks while I’m wearing my CPAP, believe it or not, because since the updates to make it work with masks it pays more attention to the area around the eyes.