Hello! I will start with how much budget you got. How much time and resources are you willing to spend on the app.
Then decide on the technology/platform to build the app for. If you are not technical person then Clarity is best place to ask for such technical questions or find some technical person or ask online.
Plan your minimal viable product (MVP). It should have the most basic required features for the app to be functional.
Going with freelancer will give you are jump start to the app development with MVP at lower cost. Quality can be questionable as freelancers usually work on multiple projects. But this can be overcome by filtering right candidates with right qualifications.
Once MVP is ready and gaining traction then you can decide on further investment.
If it is looking really good opportunity you can contact an agency and they can take you app from the MVP to the next level by designing, structuring and polishing the app.
Benefits of agency is they assign dedicated developers to the development of your app and have lot of experience in designing, developing and maintaining the apps. They also have dedicated UI/UX person. They know about best practices and help in getting valuable metrics. The only down side is cost. It can get expensive.
Once the app is profitable you can also consider moving development in-house or hire own developers who will work on the app close to you. You will have all the control, guarantee quality of the app and keep working on it continuously.
So freelance for jump start, agencies for laying out foundation and polishing, and then hire developers for continuous development and maintenance.
I hope this helps.