ATM, filtering is done on the client side, meaning the client receives ALL messages when it tries to sync back. Filtering is provided in the Matrix JS SDK and should be used. This will require resolving https://github.com/matrix-org/synapse/issues/4299
I think I already mostly fixed this. Filters do not properly use limit and instead limit the types to nothing, but this is related to the synapse bug above.
ATM, filtering is done on the client side, meaning the client receives ALL messages when it tries to sync back. Filtering is provided in the Matrix JS SDK and should be used. This will require resolving https://github.com/matrix-org/synapse/issues/4299