DEV Community

Cover image for The Difference Between a Library and a Framework

Posted on

The Difference Between a Library and a Framework


You’ve probably heard of the terms “library” and “framework” being often used interchangeably. This may be because they both have a similar purpose; both libraries and frameworks provide reusable code written by someone else that solves a common problem. However, there is a distinct difference between the two.

Main Difference Between a Library and a Framework

The main difference between a library and a framework is determined by who controls the development process, which is known as inversion of control. In other words, inversion of control defines the relationship between the code and a library and framework, respectively.

The diagram below summarizes the difference between a library and framework using the inversion of control property:


Your Code Calls a Library

You, the developer, control a library by calling specific functions from a library to insert into your code depending on your app’s needs.

Let’s use the analogy of baking a cake. You, the baker, have control over the baking process. You have a recipe and some of the ingredients, which represent your program. However, you need to go to the grocery store to buy the rest of the ingredients, which represents a library.

A Framework Calls Your Code

On the other hand, the control is inverted; the framework is in control of your code by having defined an architectural structure that you must follow when developing your app and the framework will call your code when needed.

Let’s continue using the baking analogy used in the previous section. Rather than baking the cake yourself, you go to a bakery to buy a cake. You get to choose the size, flavor, shape, and decorations, and the bakery will bake the cake for you according to your specifications. The bakery represents a framework, and your customization represents your code.


There are other subtle differences between a library and framework, but the main difference between the two is defined by the inversion of control property, which defines who controls the development process. In summary:

  • Your code controls the library.
  • The framework controls your code.

Feel free to comment below with any thoughts or questions!

Discussion (4)

nicolasomar profile image
Nicolás Omar González Passerino

I appreciate how you give that analogy to make the concept easier to understard.
Sometimes i had the question about how you can know the difference but never looked for the answer.

Do you have by chance some documentation about this subject?

maggiecodes_ profile image
Maggie Author

I don't have any documentation per say, but this FreeCodeCamp article ( really helped me understand the concept and even provided code samples.

aaronjoemoreno profile image
aaron moreno

Loved the simplicity and straight to the point

srikanth597 profile image

Nice anology