That is in a state of flux in the intervening time and may very well be modified within the close to future (e.g. Bitcoin Core PR 25600).
There are two elements to RBF: whether or not your pockets indicators for RBF on transactions it constructs and broadcasts and the way your node treats transactions that sign or do not sign for RBF.
Or does RBF must be opted into on a per transaction foundation?
At this time for transactions that your pockets constructs and broadcasts it does have to sign for RBF, sure. In any other case by default a Bitcoin Core node for instance is not going to settle for a RBF for that transaction. PR 25600 (open and unmerged on the time of writing) seeks to vary this and permit a node to just accept RBF transactions even when the unique transaction wasn’t signaling for RBF.
The Bitcoin Core pockets for the reason that merge of PR 25610 (and included within the upcoming 24.0 launch) indicators for RBF by default. Different wallets might take the same or a special strategy.