// the find
espressif/arduino-esp32
Arduino core for the ESP32 family of SoCs
The official Arduino core for Espressif's ESP32 family, maintained by Espressif themselves. It wraps ESP-IDF behind the Arduino API so you can write Arduino-style sketches for ESP32, ESP32-S2/S3, C3/C5/C6, H2, and P4. The target audience is anyone who knows Arduino and wants to prototype on ESP32 without learning ESP-IDF directly.
Espressif maintains it, so HAL support tracks new silicon quickly — ESP32-P4 is already in stable. The CI setup is unusually thorough: compilation tests across every supported board, runtime tests on real hardware via Wokwi and QEMU, and a scheduled external-library compatibility matrix that catches regressions before release. You can also use it as a component inside a native ESP-IDF project, which means you're not locked out of IDF APIs when Arduino abstractions fall short. Documentation is actual documentation, not just a README.
The abstraction ceiling is low. Once you need anything non-trivial — custom partitions, precise timer control, Bluetooth stack configuration — you're either dropping into IDF APIs directly or fighting the wrapper. The v2 to v3 migration broke a significant chunk of the ecosystem and the migration guide exists because the breakage was real enough to warrant one. ADC accuracy is still notoriously bad on some variants; it's a hardware issue but the library does nothing to warn you or offer calibration by default. Thread safety across tasks is your problem — the Arduino model assumes single-threaded execution and FreeRTOS is running underneath, so race conditions in shared peripheral state are easy to introduce and hard to debug.