Using ACF made sense in 2019 but it doesn't mesh with modern WordPress development. I just inherited a site that heavily uses ACF and it's a complete mess.
- Use 𝚠𝚘𝚛𝚍𝚙𝚛𝚎𝚜𝚜/𝚋𝚞𝚒𝚕𝚍 with 𝚠𝚘𝚛𝚍𝚙𝚛𝚎𝚜𝚜/𝚌𝚘𝚖𝚙𝚘𝚗𝚎𝚗𝚝𝚜 for modern WordPress settings (𝚋𝚞𝚒𝚕𝚍 is the successor to 𝚜𝚌𝚛𝚒𝚙𝚝𝚜, been using it all week and it's great — no more webpack)
- Native blocks are more powerful with a better, modern UX. You can use dynamic server rendered blocks where it makes sense, and WordPress 7.0's PHP block registration can replace most ACF blocks
- Use the Block Locking API so clients can't break the layouts you build
- Use extended-cpts for CPT/taxonomy management
ACF repeaters and flexible layouts aren't the way. InnerBlocks nested native blocks do this with a better UX.
Build some boilerplates using 𝚠𝚘𝚛𝚍𝚙𝚛𝚎𝚜𝚜/𝚌𝚘𝚖𝚙𝚘𝚗𝚎𝚗𝚝𝚜 for settings pages (ACF settings pages look out of place compared to this), native blocks, etc. and let agents use them to produce better interfaces quickly
I've been doing this for years on hybrid themes and haven't looked back (not using FSE, it's not the right setup for the designs I work on)
"But ACF is faster" — not anymore. Agents close the gap, and reviewing their diffs helps you see what modern WP actually looks like.