The frame rate used by CameraX (and Camera2) are usually a range of values. The camera is free to adjust the frame rate depending on lighting conditions so that the scene looks correctly exposed. An example of this range would be [12fps, 30fps]. The camera may drop the frame rate down to 12fps in low light to give the sensor enough time to collect light, but in a bright scene, it could set the frame rate to 30fps since it doesn't need as much time to collect light.
When you use VideoCapture in CameraX, or the TEMPLATE_RECORD template in Camera2, the frame rate may be fixed to something like 30fps because that is standard for videos. This just means that in certain lighting conditions, the video may become noisy to maintain that frame rate while showing enough detail in the scene.
If you want to override this behavior, in CameraX 1.3.0-alpha06 you can get the available frame rate ranges with
CameraInfo.getSupportedFrameRateRanges(). You can then set the frame rate range you would like to use with
VideoCapture.Builder.setTargetFrameRate(). In CameraX 1.3.0-alpha07, if you are not using VideoCapture, you will also be able to set the frame rate on the Preview use case with a similar method: Preview.Builder.setTargetFrameRate().