> 3. Forked Code. There should be no reason to do it
The actual problem is that some APIs are different, for example, in Chrome the notifications has a richer set of options but you need to be careful to not use the ones not supported by Firefox.
> Keep the same manifest
Actually, it depends on which options you use, for example, i18n placeholders aren't supported in Firefox while they are in Chrome, in Edge, the manifest is drastically different.