With even a "modest" internet speed, we have had perfect functionality with our ROKU device. Setting it up was painless and discovering the free and pay-for (all reasonably priced!) services has been very straight forward.
Got it specifically for casting (screen mirroring) my phone to a large screen without connecting to a network. It does this perfectly. On my Galaxy S4, I can cast a video, slideshow, or presentation to a large screen. While it is playing, I can do anything else I want with the phone without interrupting what is being shown on the large screen.
NOTE: Screen mirroring did not work at first. Under settings, it was selected by default, but seems it did turn on until I selected it & clicked OK.
Study the setup tutorial online before you start. Be prepared to spend an hour to open a Roku account and set up your device. Go through all the Settings options. Default video is 720P. Select 1080P if you have a 1080P screen.
Using the remote for searching is painfully slow. There is an app to use your phone / tablet as a remote via your wireless network. Then, you can use your device's keyboard or your voice to search. It is definitely easier to use a computer or smartphone go directly to a channel and locate what you want to watch. Then use roku to navigate to your selection and stream it.
There is a long learning curve. There is an app for Android and Chrome browser that allows you to cast SOME websites to Roku instead of your monitor. Works on YouTube. I use my computer to browse YouTube, then cast it to Roku.
Many internet service providers (but not Comcast) allow you to stream your subscriptions to Roku. DirecTV, Time Warner Cable, etc. do. There are a lot of unusual / special interest channels.