Branches are for organizing different aspects of development on a project.
For example:
You have your framework working. You decide that you want to reorganize the code for a new feature or want to work on a feature that you aren't sure about releasing. So you create a branch and work on it there. Meanwhile, you find that your framework has a bug in it. You are able to go back to the original branch, create the bug fix and release that.
You can have multiple avenues of development going on at the same time keeping them separate until you are ready to do something with them.
The use case that you are talking with an app and a framework would be to have seperate repositories for those. Rather than branching.