Battery life depends on average current
The same ESP32 can last hours or months depending on firmware and sleep strategy. Average current is the key value.
18650 runtime example
A 2500 mAh 18650 can run an ESP32 for a long time only when deep sleep dominates. Continuous WiFi operation drains it much faster.
LiPo runtime example
Small LiPo cells are useful for compact sensors, but regulator efficiency and WiFi peaks must be considered.
How to improve runtime
Use deep sleep, reduce wake frequency, send data in batches, disable LEDs and choose low-power boards.