Let's say I have a wallet with a non-native segwit address (prefixed with 3- like multisig).
Can I send my utxos from this address to a native segwit (bech32) address?
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It only takes a minute to sign up.Sign up to join this community
The wallet needs to be able to decode a bech32 address and construct the appropriate native witness output when sending funds.
Given that your (hypothetical) wallet can spend P2SH(witness) outputs already, it is likely it can or will soon support native bech32 addresses, but there is no guarantee that the latter must be supported given the first.
This somewhat depends on the wallet client, as there is nothing in the bitcoin core code that prevents any address type from sending to any other address type. The type of address/UTXO is determined by how it was sent. Coins that were at one point transacted between SegWit addresses, but made their way to a legacy address, will create a legacy UTXO.
When you receive bitcoin (UTXO), it is from one of the protocols. Your SegWit address can receive coins from a legacy address; but this does not "upgrade" the coins to benefit from SegWit improvements, they are still legacy "coins". Mixed script transactions are a feature that enables you to spend UTXOs in a single transaction that may have come from different script types.
So yes, you can send UTXOs of any protocol type to any other, but your wallet client must be able to recognize the address protocol in order to send to it. Even if you are using a wallet client with only legacy addresses and no SegWit support, the source code is backwards compatible, you will receive the coins, but when spending the UTXO, you cannot take advantage of the SegWit improvements.