This is what I use and it works fine for me:
- I use the default Contact app. If you are saving to the Device - there is no birthday field. See below.
- I use DAVx5 to sync my contacts to multiple sources (Thunderbird) and my Pixel 6a.
Running a simple CardDAV/CalDAV server with Baïkal. Then saving to the created DAVx5 Address book gives me the option to add birthday. - I use Birthday Adapter to auto-generate my local contact's birthdays and attach it to my calendar app (Etar).
Of course, you can use a more sophisticated CardDAV/CalDAV server with an option to auto-generate a birthday calendar for you, and then you just sync/merge it to your calendar app.