Dynamic APY and MasterChef contract

Have been looking into different contracts for high-yield farming and still can't understand one thing. APY depends on total pooled tokens and when that number grows - APY decreases.

User gets his rewards only via withdraw/unstake call where current APY applies. Does it mean that user can miss higher rewards from previous blocks (with higher APY) if he makes withdrawal when APY already dropped?

I understand that distributing rewards per every block is too gas-consuming but I am curious if there are any techniques which introduce "dynamic" rewards? Or maybe I am missing something and that concept was already implemented in such contracts?

By saying dynamic rewards, you mean the trajectory of APYs matters, right? The thing is the storage of the trajectory of APYs on chain would be very expensive. No such implementation exists or should exist in my honest opinion.