---
title: Knockout.js Reviews
meta_title: 'Knockout.js Reviews 2026: Details, Pricing, & Features | G2'
meta_description: Filter 48 reviews by the users' company size, role or industry to
  find out how Knockout.js works for a business like yours.
aggregate_rating:
  rating_value: 3.9
  review_count: 48
  scale: '5'
date_modified: '2026-06-21'
parent_category:
  name: Web Frameworks
  url: https://www.g2.com/categories/web-frameworks
---

# Knockout.js Reviews
**Vendor:** Open Source Initiative (OSI)  
**Category:** [JavaScript Web Frameworks](https://www.g2.com/categories/javascript-web-frameworks)  
**Average Rating:** 3.9/5.0  
**Total Reviews:** 48
## About Knockout.js
Knockout is a standalone JavaScript implementation of the Model-View-ViewModel pattern




## Knockout.js Reviews
  ### 1. Legacy javascript library

**Rating:** 3.5/5.0 stars

**Reviewed by:** Milind S. | Software Engineer, Mid-Market (51-1000 emp.)

**Reviewed Date:** May 28, 2022

**What do you like best about Knockout.js?**

One the early javascript library for building single page frontend application. It hss some required features for reactivity.

**What do you dislike about Knockout.js?**

Market accetibility is close zero. Deprecated and unmaintained.

**What problems is Knockout.js solving and how is that benefiting you?**

Built Magento 2 UI for Admin and Storefront.

  ### 2. I have been working with  Knockout.js from last almost 8 years and I found it a very useful tool.

**Rating:** 4.0/5.0 stars

**Reviewed by:** Aftab A. | Senior Software Developer, Mid-Market (51-1000 emp.)

**Reviewed Date:** January 19, 2021

**What do you like best about Knockout.js?**

It's simple lifecycle and lightweight mechanism to be able to create complex dynamic data models easily.
 It’s a pure JavaScript library as it works with any server or client-side technology. The way HTML DOM elements are linked to the model using a very simple syntax, using a data-bind attribute. Using this feature, it’s made easy to achieve responsiveness. Able to create custom bindings inside data bind. Also Dependency Tracking feature which Tracks data changes in the KO attribute automatically and updates the respective affected areas. It is a best way to build complex UI structures. Knockout implements customized behaviors in just a few lines of code as new declarative bindings for easy reuse. When a change is made in the view model, it automatically changed in the UI and vice versa. It Respect HTML & CSS, it does  not bring markup codes into JavaScript code, that is, HTML and JavaScript  is completely separated.

**What do you dislike about Knockout.js?**

It's not evolving at the pace as compared to other javascript libraries. Hard to use templates that  exist on external files, this would make developers hard to co-work Knockout is only for two-way data-binding, automatic UI refresh as data change, this means that we need another library or tool for other needs, such as hash based routing, UI components and so on.

**Recommendations to others considering Knockout.js:**

Please give it a try it its free and open source, and it is lightweight and small framework.

**What problems is Knockout.js solving and how is that benefiting you?**

I am mostly solving front end and user experience related problems with knockout It works on all mainstream browsers (Internet Explorer, Chrome, Firefox)

  ### 3. Knockout JS  works great with simple and clean underlying data model.

**Rating:** 3.5/5.0 stars

**Reviewed by:** Amjad H. | Software Engineer, Small-Business (50 or fewer emp.)

**Reviewed Date:** January 22, 2021

**What do you like best about Knockout.js?**

How knockout JS modify DOM with clean and simple data-binding attributes. Also, the DI feature and Easy refresh UI mechanism are superb.

**What do you dislike about Knockout.js?**

Knockout JS is not like Angular or React. It's more like a library rather than a framework. Sometimes it's hard to remember its lengthy attribute name. Also, Its community is not strong enough.

**What problems is Knockout.js solving and how is that benefiting you?**

Actually, I have been using this as a replacement for Jquery. As I have been developing a legacy application, I thought It would be better to use Knockout JS to render some of my pages.

  ### 4. Rich JavaScript framework with concise and readable syntax.

**Rating:** 5.0/5.0 stars

**Reviewed by:** Rudra T. | Front-End Developer, Small-Business (50 or fewer emp.)

**Reviewed Date:** March 05, 2021

**What do you like best about Knockout.js?**

automatic UI refresh, clean, readable, rich and responsive display.

**What do you dislike about Knockout.js?**

Proliferation for view model because it cause the view model to increase dramatically.

**Recommendations to others considering Knockout.js:**

If you are looking for good JavaScript in MVVM pattern knockout.js is best option for you.

**What problems is Knockout.js solving and how is that benefiting you?**

I solved the static HTML code to dynamic DOM elements.

  ### 5. I would not recommend Knockout.js to any of my colleague

**Rating:** 0.0/5.0 stars

**Reviewed by:** Haiming Z. | Software Development Engineer, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 02, 2021

**What do you like best about Knockout.js?**

The Knockout.js does not dependencies which makes it perfect for a small project.

**What do you dislike about Knockout.js?**

Comparing React.js which I'm working with now, Knockout.js doesn't have an active community and lack of ready to use plugins

**What problems is Knockout.js solving and how is that benefiting you?**

I didn't use Knockout.js after a comparison with React

  ### 6. I was use knockout js about 5 years ago,but now I'm using vue js

**Rating:** 3.0/5.0 stars

**Reviewed by:** Orkhan H. | Software Developer, Small-Business (50 or fewer emp.)

**Reviewed Date:** January 26, 2021

**What do you like best about Knockout.js?**

Knockout js is my first single page application experience

**What do you dislike about Knockout.js?**

I think the syntax of the Knockout remains weak compared to other frameworks.

**What problems is Knockout.js solving and how is that benefiting you?**

I also used orkhani dynamic table creation, and I could do  filtering and searching on this table.

  ### 7. I is a very useful learning experience, must try for all.

**Rating:** 5.0/5.0 stars

**Reviewed by:** Prerna R. | Software Developer, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 02, 2021

**What do you like best about Knockout.js?**

the language is really easy to understand, makes you grasp the concept easily.

**What do you dislike about Knockout.js?**

The contents should be more deep into the topic

**What problems is Knockout.js solving and how is that benefiting you?**

logics for iteration through arrays.

  ### 8. Good framework but very less supportive community documentation

**Rating:** 2.5/5.0 stars

**Reviewed by:** Verified User in Construction | Small-Business (50 or fewer emp.)

**Reviewed Date:** March 12, 2021

**What do you like best about Knockout.js?**

Almost everything that I have worked is based on observables. Easy to learn basics when you are new to front end frameworks

**What do you dislike about Knockout.js?**

Very little support for advanced UI interaction. Community support is not available mostly. No good documentation with various examples.

**What problems is Knockout.js solving and how is that benefiting you?**

None

  ### 9. Knockoutjs has been very helpful for me in creating and managing dynamic web applications

**Rating:** 4.0/5.0 stars

**Reviewed by:** Verified User in Information Technology and Services | Mid-Market (51-1000 emp.)

**Reviewed Date:** January 27, 2021

**What do you like best about Knockout.js?**

Observables are the best part for me using knockout.

**What do you dislike about Knockout.js?**

Nothing in knockout to dislike. 
I think there are some functions which are in lodash library and can be incorporated in knockout

**What problems is Knockout.js solving and how is that benefiting you?**

Data manipulation from API, 
Creating custom html components,
Managing asynchronous code

  ### 10. Knockout.js is a very good library, but now is JS frameworks time.

**Rating:** 2.5/5.0 stars

**Reviewed by:** Verified User in Computer Software | Mid-Market (51-1000 emp.)

**Reviewed Date:** January 26, 2021

**What do you like best about Knockout.js?**

I like declarative binding, observables.

**What do you dislike about Knockout.js?**

What is least helpful about Knockout.js? What are the downsides of using Knockout.js?

**Recommendations to others considering Knockout.js:**

Very good and simple JavaScript library who give you all tools for create web pages

**What problems is Knockout.js solving and how is that benefiting you?**

Interactive UI. Quick on implementation

  ### 11. it need more support from dev community

**Rating:** 2.5/5.0 stars

**Reviewed by:** Verified User in Oil & Energy | Small-Business (50 or fewer emp.)

**Reviewed Date:** January 13, 2021

**What do you like best about Knockout.js?**

easy to use, came be applied rightaway , doesnt require much work

**What do you dislike about Knockout.js?**

not a complete framework like angular or react

**What problems is Knockout.js solving and how is that benefiting you?**

communication with the api's and interaction with the backend is easy with knockout.js , if your backend is on asp.net

  ### 12. A good framework that has been superseded in popularity

**Rating:** 2.5/5.0 stars

**Reviewed by:** Rolando D. | Junior Developer, Small-Business (50 or fewer emp.)

**Reviewed Date:** November 21, 2018

**What do you like best about Knockout.js?**

If you need to create a web application that has a lot of concurrent updates to be made to the view depending on data models, Knockout JS can help you doing just this. It's tiny and not overly opinionated, and it's a totally decent alternative to React and Angular.

**What do you dislike about Knockout.js?**

It has been firmly superseded in popularity by the two giants React and Angular, which have way bigger endorsers and a lot of documentation and Q/A on Stack Overflow and the internet in general.

**Recommendations to others considering Knockout.js:**

Knockout JS is still a valid framework, but I believe you'd be better set with React and/or Angular which have slight better performance but moreover are much more widely spread, and this can help a lot in development.

**What problems is Knockout.js solving and how is that benefiting you?**

Knockout allows to take on where jQuery leaves as it's not practical and too expensive to maintain. It can be very useful in powering web app graphic user interfaces that reflect immediately what's happening in the data model.

  ### 13. Good framework for SPA

**Rating:** 3.5/5.0 stars

**Reviewed by:** Francisco P. | Small-Business (50 or fewer emp.)

**Reviewed Date:** October 19, 2018

**What do you like best about Knockout.js?**

Additionally, it offers bidirectional trade tracking between the view and the model. It is a well-documented, well-documented, and easy-to-understand tool, and it has first-class network link information, from JavaScript structures to HTML factors and vice versa, which is known as "binding link elements" for JavaScript Gadgets for information adjustments. Js became very easy.

**What do you dislike about Knockout.js?**

To test in more than one browser and, especially, to address old IE issues. An attempt has been made to preserve it by including features like components, but it is struggling against its own design that will do so. There are problems placing the DOM branch under an overlaid Knockout knockout. The information is linked, but it lacks the features found in full frameworks, such as routing or UI controls. It is lightly controlled while using a large number of entities or carrying out projects for mobile devices.

**Recommendations to others considering Knockout.js:**

Go through the tutorials on the legitimate Knockout. Study other frameworks before Angularjs, which may be more famous across the web and remain or be more compatible. Oo knockoutjs Investing time in a JS framework can be very costly for you and your business. So try to choose the exceptional framework that suits your needs before diving in. Emulating a local computer application, enjoy using jQuery ajax and knockout.

**What problems is Knockout.js solving and how is that benefiting you?**

He did the work and then some, but after moving forward with a few large user interfaces with the range of links within the three digits, the performance successes started to be excellent. We are trying to create web applications for dynamic data series. We are using it as a linked data library, and it solves that well. It's easy to parse JSON formatted strings and display them to the person. And with the use of cache manifests, we were able to reduce the amount of work our servers need to perform by a wide margin.

  ### 14. I use knockout js in almost all my projects.

**Rating:** 4.5/5.0 stars

**Reviewed by:** Serna p. | Small-Business (50 or fewer emp.)

**Reviewed Date:** September 14, 2018

**What do you like best about Knockout.js?**

I love the idea of observing and being able to seamlessly link them to any HTML detail.

**What do you dislike about Knockout.js?**

It can be very disconcerting to use links from a couple of direct view models at the same time.

**Recommendations to others considering Knockout.js:**

At first, everything is confusing, but once you get the hang of it, it's a piece of cake. It's not advisable to use knockout in all projects.

**What problems is Knockout.js solving and how is that benefiting you?**

Fast and responsive user interface that undoubtedly adapts to the custom view of the trends that match the trends in my database. This actually makes it pleasant to load and store statistics from my database in the knockout view models.

  ### 15. Easier to use and much more lightweight than other similar frameworks

**Rating:** 4.0/5.0 stars

**Reviewed by:** An P. | Node.js Web Developer, Information Technology and Services, Small-Business (50 or fewer emp.)

**Reviewed Date:** April 30, 2018

**What do you like best about Knockout.js?**

If you're not concerned about routing and only really need to do some data binding than dropping in one file with Knockout is better than using their other more popular JS frameworks. AngularJS manages the whole application whereas with KnockoutJS the application structure is entirely up to you. I decided to use Knockout because I prefer to do most of the coding myself.

**What do you dislike about Knockout.js?**

The if-else conditionals need to be improved. Other simple programming constructs aren't implemented either. Code output is also very cluttered when inspecting the DOM after rendering. Ways to download and manipulate templates could also be better.

**Recommendations to others considering Knockout.js:**

If you don't play on using Angular or React than Knockout.js is probably the best choice for simple data binding.

**What problems is Knockout.js solving and how is that benefiting you?**

I use Knockout mostly for templating and gives me the ability to separate the code into more manageable structure. 

  ### 16. Knockout JS

**Rating:** 5.0/5.0 stars

**Reviewed by:** Verified User in Information Technology and Services | Small-Business (50 or fewer emp.)

**Reviewed Date:** October 24, 2017

**What do you like best about Knockout.js?**

The best thing about using knockout js is it's two way binding and rich user interface, knockout tables are easy and good to use.

**What do you dislike about Knockout.js?**

It's knockout validation is pretty much confusing to implementation for mvvm model. 

**What problems is Knockout.js solving and how is that benefiting you?**

Asp.net core with knockout is used for building applications which need two way binding and it's really nice to use.

  ### 17. KnockoutJS is an organizational library to create easy to understand, extendable web apps

**Rating:** 4.5/5.0 stars

**Reviewed by:** Eniko P. | Small-Business (50 or fewer emp.)

**Reviewed Date:** March 07, 2016

**What do you like best about Knockout.js?**

While learning javascript, my first Model-Vew-Viewmodel (MVVM) technology was KnockoutJS. It is simple to understand, well documented tool and has a decent community. For a beginner or while developing relatively simple one-page web apps, I found  KnockoutJs knocks the other framework out by its simplicity and performance. You very quickly get the hang of it.
 It is an amazing tool to bind User Interface (UI) with your data model. Through bindings, you can create set of DIVs from just an array (either coded in javascript or using jQuery). Whenever the array changes, the UI changes consistently. To add or delete any DOM element based on UI changes is just a line of code. 
Adding search or filter functionality to your web app  becomes extremely easy.

**What do you dislike about Knockout.js?**

KnockoutJS's main scope is data binding and templating, to create more complex web application you need to combine it with other library(ies).

**Recommendations to others considering Knockout.js:**

If you are a beginner front end web developer or new to MVVM technology, I recommend to start with KnockoutJS. It is well documented, easy to understand and supported by a decent community. 
It is definitely worthwhile to add to your web development technology toolbox orconsider as a solution in your future web development projects.

**What problems is Knockout.js solving and how is that benefiting you?**

While creating a Neighborhood Map web application that is offline first and a single-page application, KnockoutJS helped me to keep my code streamlined, well organized and easily extendable. I could avoid long spaghetti codes thanks to data bindings.



  ### 18. Fast development with knockout MVVM framework

**Rating:** 3.5/5.0 stars

**Reviewed by:** Anas J. | Senior .Net Developer, Information Technology and Services, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 27, 2016

**What do you like best about Knockout.js?**

1- The way of using declarative bindings
2- Awesome template systems.
3- large amount of plugins to use it.
4- Can develop single page application with Drundal that based on knockout.
5-  Using MVVM UI Design Pattern.
6- Knockout is great for creating decoupled models and apply them to views through declarative data binding. It also gives you two way change tracking between view and model.
7- Contains KO utility functions (ko.utils).

**What do you dislike about Knockout.js?**

1- you need to use plugins for some basic features like url routing and validation.
2- Some performance issues when you render large number of items in html.
3- Need ES6 Integration.
4- Need for more complex examples.
5- Data-binding is mixed with html elements.

**Recommendations to others considering Knockout.js:**

I recommend to use Drundal instead of only use knockout because it contains many features to build fully Single Page Application.

**What problems is Knockout.js solving and how is that benefiting you?**

Utilize MVVM framework that help me on fast development and minimize the number of defects in development phase.

  ### 19. Easy creation of Dynamic reusable frontend interfaces

**Rating:** 5.0/5.0 stars

**Reviewed by:** Chris H. | Software Developer 3, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 26, 2016

**What do you like best about Knockout.js?**

It makes building dynamically populated pages super easy allowing you to offload the rendering of the data to the client instead of having to do it all server side on request. It also makes it very easy to make the pages of our site dynamically hide and show different sections depending on the values entered/selected by the user.

**What do you dislike about Knockout.js?**

There are some features that have almost no documentation, like in a component if you have a function attached to the view modal called "dispose" it will get called as it is cleaning up the component. I would think this would be important to know for single page apps to cut down on memory leaks from subscriptions and computeds.

**Recommendations to others considering Knockout.js:**

Go through the tutorials on the official Knockout.js site. It will help you get a good basic understanding of what Knockout.js is designed to do and the problems it's meant to help solve.

**What problems is Knockout.js solving and how is that benefiting you?**

It is helping us by making the server having to do less work when a client wants to view a page due to putting all the dynamic rendering onto the clients browser instead of the server. And with the use of cache manifests we have been able to cut down the amount of work our servers need to perform by a large margin.

  ### 20. Painless and a flexible front end library.

**Rating:** 5.0/5.0 stars

**Reviewed by:** Karl Marx L. | Freelance Web Developer, Information Technology and Services, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

I like it's flexibility and it is back-end agnostic. It is easy to learn in a short span of time, it has a nice set of Utility functions and I LOVE using it! I finished four projects using KnockoutJS and they all perform well. The documentation is straight to the point and I think that is a big plus compared to other JS libraries, that is maybe BETTER, but it lacks a good documentation.

**What do you dislike about Knockout.js?**

I disliked the declarative binding. Because sometimes I end up mixing my script in my HTML. But this library solves that problem https://github.com/rniemeyer/knockout-delegatedEvents, made by Ryan Niemeyer, one of the Knockout's author.

**What problems is Knockout.js solving and how is that benefiting you?**

Emulating a native desktop app experience using jQuery ajax and knockout. It is easy to parse JSON formatted strings and display it on the user. Knockout also helps you develop faster using it's collection of utility functions and you can create your own bindings, and your own components. It makes your application more responsive. 

  ### 21. Knockout a single page web app quickly with Knockout.js

**Rating:** 4.5/5.0 stars

**Reviewed by:** Ken D. | Technical Reviewer (ArcGIS), Publishing, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

When implementing Model View ViewModel practices, creating applications with Knockout.js was very easy. Much of the code you're writing looks like normal JavaScript objects with some Knockout observable logic dropped in. Knockout gives you the ability to create applications as complex as you want, with data properties as complex as you can imagine, and the data-binding it offers means your data will show up as you want it.

What amazed me was how simple and small some of the changes were when I needed to do something complex. Most code changes were 1-4 lines long, to create some custom feature that would normally be 100 lines of jQuery or Dojo code.

**What do you dislike about Knockout.js?**

Knockout differs from some more comprehensive frameworks (like Angular or Ember) where everything is included. Knockout provides data-binding, but lacks features found in full frameworks like routing or UI controls. However, you can mix and match other libraries in your app that handle those features, and it integrates very well. You can mix in jQuery UI user controls, or a library like Sammy.js for routing, and let Knockout handle the data binding and keeping up with the state of your application. It depends on how much you want to get your hands dirty with mixing in different libraries.

The one issue I had was that support for more complicated examples and integration with other libraries was hard to find. I'd often find the answer somewhere on StackExchange, or buried in a 5 year old blog that was abandoned 3 years ago. 

**Recommendations to others considering Knockout.js:**

There are frameworks out there that do more (like AngularJS or Ember). But if you need to create a single page application quickly, and you don't want to experience the crazy learning curve that those frameworks require, try Knockout.js. It's easy to use, and you'll be amazed at what you can create within the first hour. You can be very productive very quickly with this library.

**What problems is Knockout.js solving and how is that benefiting you?**

I was tasked with creating a property search website for a government organization. Once we had the data model for the project, creating the single page web application and adding all the special logic within was a breeze. When change requests came (and we received a lot of them), I was able to handle most of them with just a few lines of code. I was amazed at how quickly we could turn around change requests to the client.

  ### 22. I have been using Knockout for about 4 years in a big enterprise application.

**Rating:** 5.0/5.0 stars

**Reviewed by:** Ruslan L. | ASP.NET and JavaScript Developer, Computer Software, Enterprise (> 1000 emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

Knockout is unobtrusive library with focus on data binding. It's very easy to create app with complex UI logic and bind it to UI representation. The best thing about Knockout, it doesn't stand in your way.

**What do you dislike about Knockout.js?**

You have to write a lot of ko.observable for complex objects. But still there's a Knockout ES5 plugin that automates observables. The drawback of the plugin that it doesn't support old browsers.

**Recommendations to others considering Knockout.js:**

Take into account that knockout is just a library with focus on data-binding. It has no routing

**What problems is Knockout.js solving and how is that benefiting you?**

I use knockout for enterprise app in medical field. Knockout enables to create complex UI with grids, wizards, panels and it makes easy to implement UX best practices. It takes very few time to implement features and deliver business solutions in a short term compared to using other technologies.

  ### 23. Great framework

**Rating:** 4.0/5.0 stars

**Reviewed by:** Matt A. | Lead Software Developer, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

Binding dom elements to javascript objects for data driven changes.

**What do you dislike about Knockout.js?**

It is a very flexible framework and with power comes great responsibility.  It is very easy to start to break best practices because knockoutjs will not force you to do things correctly.  This is very powerful, but if you do not hold your developers to a coding standard things can get very muddled and it can lead to problems.

**Recommendations to others considering Knockout.js:**

Really consider if it meets all your requirements.  It's powerful with what it does, but it's not Angular.

**What problems is Knockout.js solving and how is that benefiting you?**

We use it in several business web apps for binding data to dom elements and for components.  We have a lot of data and input fields so having an easy way to bind the data between the business logic and the UI is very useful.

  ### 24. Simple to use, but can can be difficult to debug

**Rating:** 3.5/5.0 stars

**Reviewed by:** Danny W. | Software Developer 2, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** March 01, 2016

**What do you like best about Knockout.js?**

The library does not include more features than it needs and is easy to understand. The documentation on their site is fairly detailed with some good examples. The ability to bind changes to dom elements makes plain jQuery look ancient. 

**What do you dislike about Knockout.js?**

Cretan kinds of errors thrown to the console give little or no information on what the actual issue is. Often times it can be easy just trying to guess around to find the source of an issue. Some of the more advanced and highly useful features are only found on blogs outside of their site. 

**What problems is Knockout.js solving and how is that benefiting you?**

We have developed several applications using the knockout library. The library has been very convenient for displaying updates to page elements as the use inputs data without reloading the page. 

  ### 25. Very good data-binding framework

**Rating:** 4.5/5.0 stars

**Reviewed by:** David D. | Desenvolvedor de software, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 26, 2016

**What do you like best about Knockout.js?**

Knockout.js is a very well-documented, tiny javascript MVVM framework. 
It is very easy to use and it has many extension points which very good if you have special needs or want to create custom bindings.
As it focus only data-binding and templating, it will play nicely with other libraries.
One difference with other frameworks is that it has support for browser back to IE6, so it can be a good choice if you have to support legacy browsers.

**What do you dislike about Knockout.js?**

Recently knockout.js development seems to slow down quite a bit, and other frameworks with similar purpose such as React, Vue.js or Aurelia are gaining  momentum.
The legacy browser support can also be seen as a drawback as knockout.js is not taking avantage of new javascript features and has no compatibility with ES6.  
Components have been introduced on newer versions but that are a little tricky to implement. 

**Recommendations to others considering Knockout.js:**

Knockout.js is definitely a framework to consider if you are looking for a pluggable MVVM library, especially if you are looking for old browser compatibility

**What problems is Knockout.js solving and how is that benefiting you?**

If you are looking for a javascript data-binding framework you should definitivelly consider knockout.
Differently from Angular.js, it does not aim at providing you everything you need for SPA development (for example data validation, routing are not included) so it needs to be integrated with other librariies and framework.

  ### 26. Working on a product using knockout with MVC 5

**Rating:** 4.5/5.0 stars

**Reviewed by:** Furqan R. | Software Developer, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

I came from a WPF background so I am very excited to see databinding and ease it provides with UI customization, adding and removing css on the fly makes it very robust. I was just discussing with my brother how knockout allows conditional tags to be added to the html which provides considerable flexibility in creating templates for different kinds of form controls and based on customer requirement we can apply custom styling on each control. Moreover, we are also using knockout for data validation which is another neat feature and very critical functionality to our customers. 

**What do you dislike about Knockout.js?**

I consider myself as a beginner user right now. I don't have any particular dislikes at the moment.

**What problems is Knockout.js solving and how is that benefiting you?**

I work on a data collection application and our product requires customization of the forms to fit the customer needs which means, we allow our customers to design their own forms. This requires a considerable amount of reusable components and conditional styling. 

  ### 27. Effective for small to medium-sized web apps

**Rating:** 4.5/5.0 stars

**Reviewed by:** Matt G. | Software Engineer, Financial Services, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

While it's not the newest framework around, Knockout remains a great choice for developers looking for a non-intrusive data-binding/templating solution in the front end. Unlike Angular and React, Knockout does not attempt to control the structure of your application. Thanks to its wonderfully expressive design, It's easy to hit the ground running and create surprisingly complex components for your application quickly. Custom bindings and elements can be used to do just about anything, and make it easy to integrate with other libraries or frameworks. 

**What do you dislike about Knockout.js?**

Knockout does not include a router or HTTP client, so you will need to include some other libraries if you are creating a single-page application. While it is definitely possible to write performant apps with Knockout, it is easy to run into performance issues if you are not aware of some of the more obscure features or if you go overboard with two-way data-binding. For this reason, you might want to use something more comprehensive for large applications. Although it still recieves updates, Knockout is ancient in JavaScript time, so you may want to think twice about using this if you intend to stay on the cutting edge. 

**Recommendations to others considering Knockout.js:**

If you want a front-end framework for a small/medium-sized project that is easy to learn and to integrate into any codebase, Knockout is a great choice. Just be aware of what else is out there. 

**What problems is Knockout.js solving and how is that benefiting you?**

Knockout's approach to data-binding is its biggest strength, the use-cases for which are numerous.
I started using Knockout when tasked with creating a series of single-page applications involving the graphical manipulation of complex data structures. It did the job and then some, however after carrying forward with some larger UI's (with the number of bindings in the triple digits), the performance hits started to become noticeable.

  ### 28. Amazing Framework

**Rating:** 5.0/5.0 stars

**Reviewed by:** kevin s. | Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

The main reason I  have been using Knockout ever since I learnt about it is because it facilitates the update of data based on user's input and interactivity with a UI on real time. Another feature that I like about the framework,  is how it makes working with forms and its value data very easy. Forms are the main way we get input from users so it comes in handy whenever we need to observe or listen to changes on the value of the forms.

**What do you dislike about Knockout.js?**

It is hard to say what I do not like from the framework. But I can tell you a few areas where I wish the framework behave in a different manner. For example,it is frustrating when you  have an active ViewModel and you cannot access data that resides inside of the ViewModel anywhere outside it. I know that this might have to do with programming scoping rules but it would be nice to have a way to at least refer to data that resides inside the ViewModel when you working outside of it.   Also, it is frustrating that you cannot debug the code that resides inside the ViewModel when debugging with Google Chrome Tools. 

**Recommendations to others considering Knockout.js:**

I think you cannot go wrong with Knockout.js It is a fully fledged Javascript framework that will save you a lot of times and headaches by making connection between view and data more easy to control

**What problems is Knockout.js solving and how is that benefiting you?**

Using Knockout has benefit me because it speeds production of interactive websites and makes making a connection between the view and the data easy.

  ### 29. Had its glory days but now are (almost?) gone

**Rating:** 2.5/5.0 stars

**Reviewed by:** Giorgio B. | Web Architect, Computer Software, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

In the beginning of this decade it was a pioneering library that opened the road for other ones, like Angularjs. Its good point is that it doesn't claim to solve all the tasks needed to build a complex Javascript app but tries to solve mainly a problem: binding data from javascript structures to HTML elements and viceversa, what is called "two way binding". This really was a big selling point, because it makes really easy to drive HTML/DOM and interact with it, but as we will see, it can also be a double edged sword. Still, if you need this kind of binding and don't want to"buy" a big framework like Angular.js, this could be a good choice.

**What do you dislike about Knockout.js?**

"Two way binding". It work wonders and makes magic things possible, but with power comes responsibilities (and troubles). I've seen projects where it was abused to the point where it was needed to open the magic box and mess with the internals to accomplish otherwise simple tasks. So beware to use with caution and strictly following the intended use, philosophy and idioms.

**What problems is Knockout.js solving and how is that benefiting you?**

Personally I've used it to build rich client side interactions but limited to parts of bigger classic MVC web apps. Just ones I worked on a project built largely on it (single page app) and had to struggle to understand and untangle some weird data dependency crossings.

  ### 30. Good framework for SPA

**Rating:** 4.0/5.0 stars

**Reviewed by:** Daniel C. | Senior Software Engineer, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

The best of Knockout is its simplicity and the fact that it doesn't try to do a lot of things like other client side frameworks like Angular, Ember, or Backbone - it only has a very small and focused set of features around "observables" which provides you with a very easy to use MVVM architecture for your app. The backward compatibility is also very good, even old browsers like IE6

**What do you dislike about Knockout.js?**

It has not been actively maintained / improved in the last couple of months, looks like the creator, Steve Sanderson is not working anymore on it.

**Recommendations to others considering Knockout.js:**

Have a look at other frameworks before like Angularjs, which are more popular around the community and better maintained / supported. Investing time in a JS framework can be very expensive for you and your company, so try and pick the best framework that fits you need before diving in*.

**What problems is Knockout.js solving and how is that benefiting you?**

I have built 2 SPAs using Knockoutjs currently used in production for my company. As a benefit, our implementation times for complicated UI / UX using Knockoutjs has been greatly reduced, mainly cause of our expertise and also because its ease to use. 

  ### 31. Knockout.js - Great for small to medium sized applications

**Rating:** 4.0/5.0 stars

**Reviewed by:** Adam B. | Mobile Engineer, Internet, Enterprise (> 1000 emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

I really like the two-way data-binding aspect when working with a bunch of user interactions. Keeping the data-layer in sync with the view layer automatically saves developers a lot of time and prevents annoying synchronization bugs.

I also really like the very small API footprint. You can learn and memorize the whole API in a day or less and be productive very quickly.

I also like how you can use it on just a very small part of your website. You can even use it for a single form in an otherwise static webpage. If you use Knockout, you aren't making a huge technical commitment. 

**What do you dislike about Knockout.js?**

I don't dislike this per se, but two-way data binding is considered an anti-pattern by a large swath of front end developers. You'll have to evaluate how important that is to you. There are still many very popular front end frameworks that implement this pattern, so it's not going away any time soon.

Something I did dislike about Knockout is it does not scale particularly well. Once your application grows beyond a certain complexity, you'll find yourself having to write A LOT of code to try to keep up with requirements if you try to build anything more than basic web applications. 

Knockout really only provides the most basic aspect of the MV* design pattern; you'll be responsible for a client-side router, something to make request back to a server, cookie management, etc. It's important to remember Knockout is a library and NOT a framework.

**What problems is Knockout.js solving and how is that benefiting you?**

I was using Knockout for a simple internal website where users would enter various pieces of information and that would be saved back to the database. The two-way data binding allowed very strict validation at the data layer and prevented erroneous data from making it into the database.  

  ### 32. Knockout helps you write cleaner code for complex web apps

**Rating:** 4.5/5.0 stars

**Reviewed by:** Akshat Jiwan S. | Computer programmer, Computer Software, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

I loved the interactive examples. When you're starting out with a new library/framework it is crucial that you get a hang of basics quickly. With the help of interactive examples I was able to write productive code with knockout within a couple of days.

**What do you dislike about Knockout.js?**

Initially combining knockoutjs with other frameworks like jquery proved a bit challenging for me. The documentation which is otherwise fantastic lacks examples on how to make knokcout work with other frameworks. 

**Recommendations to others considering Knockout.js:**

Try out the interactive demo. It takes no more than 20 minutes to complete all the exercises and after you've done so you'll be in a much better position to take a decision. 

**What problems is Knockout.js solving and how is that benefiting you?**

Knockout js helps us write clean maintainable code. It reduces the chances of bugs,makes adding new features to the UI easy  and helps us deliver a superior product to our customers. 

  ### 33. Easy start for smaller projects

**Rating:** 3.5/5.0 stars

**Reviewed by:** Matthew N. | Software Developer, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** March 02, 2016

**What do you like best about Knockout.js?**

The simplicity of getting started is nice but even better are the components which are a must for a larger application. The knockout.js website has some of the best interactive tutorials I've experienced for a JS framework.

**What do you dislike about Knockout.js?**

The visual delay, especially on larger applications, between HTML rendering and Knockouts rendering is definitely suboptimal.

While the knockout.js website documentation is great it could use a better discussion on the mapping plugin which is super useful but the documentation has some gaps.

**Recommendations to others considering Knockout.js:**

Definitely look into components, they make things so much better.

**What problems is Knockout.js solving and how is that benefiting you?**

Building large data entry application.

  ### 34. I used it for 2-way data-binding on a RIA system and it was very lightweight and fast

**Rating:** 4.0/5.0 stars

**Reviewed by:** Flávio C. | Research Professor, Information Technology and Services, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

It is cross browser up to IE6 and provides 2-way data-binding out of the box, in an extremely not intrusive/opnionated way. Besides, the lib is lightweight and fits in lots of projects that are agnostic to data binding.

Besides, using Knockout enables programmers to express behavior in a declarative way, which allows for much less javascript code in projects.

**What do you dislike about Knockout.js?**

There is no concern separation because the knockout declarations go inside the html files, mixed with the html tags.

**Recommendations to others considering Knockout.js:**

It's a good option if you want 2-way data-binding in an unobtrusive/unopionated fashion and using declarations instead of writing a lot of javascript code.

**What problems is Knockout.js solving and how is that benefiting you?**

By using Knockout I was able to develop a lot of functionality without spending much time writing javascript code. Besides, testing was easy because the lib is widely compatible, even with old browsers.

  ### 35. Quite good for common UI needs

**Rating:** 3.5/5.0 stars

**Reviewed by:** Federico R. | Web Developer, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

It's very easy to create complex user interfaces. MVVM is great for managing forms and app-like UI. Knockout also gives you a lot of power and choice, it's basically just the "View Layer". Also it's very easy to create custom bindings and components.

**What do you dislike about Knockout.js?**

It's a big too heavy as it supports very old browsers, it'd be great if there was a "modern" version without all those extras. View Models can grow a lot, it's up to the developer to keep them small. 

**Recommendations to others considering Knockout.js:**

Worth giving it a try, it's not hard to pick up.

**What problems is Knockout.js solving and how is that benefiting you?**

Out of all the other libraries Knockout is probably one of the easiest to pick up and get up and running with. You can make a quite complex UI very fast using KO. 

  ### 36. Knockout large data collection project

**Rating:** 4.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

Small and fairly simple to work with. It does one thing and does it well. We cache our scripts for offline use so smaller frameworks are always a plus for us.

**What do you dislike about Knockout.js?**

The syntax it not as clean as some other binding frameworks so complex bindings can be a bit hard to decipher at a glance.

**Recommendations to others considering Knockout.js:**

If you need just data-binding and not everything that a framework like Angular has to offer it's a great lightweight option.

**What problems is Knockout.js solving and how is that benefiting you?**

We have a large multi-page form for collecting patient data and it contains thousands of possible datapoints. Using knockout has removed so much boilerplate code to make that work. It abstracts away so much and makes for nice testable units with the MVVM model.

  ### 37. Data-binding an enterprise-level data collection application

**Rating:** 4.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Mid-Market (51-1000 emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

Knockout made it really easy to bind data between my view and my model.  Once components were introduced, we were easily able to convert complex portions of our interface into re-usable components.  Knockout was pretty easy to pick up and once you got the hang of it made doing fairly complicated things quick and easy.

**What do you dislike about Knockout.js?**

Knockout only solves half of the problem.  If you create a bad UI or can't for your data properly, Knockout won't solve those issues.  Sometimes, while debugging, I would grow frustrated with some of the errors and error messages.  Often times these were due to my own poor logic, but it would take some time to trace down the proper issue.

**Recommendations to others considering Knockout.js:**

If you want data binding without all of the extra overhead some other library's use then Knockout is for you.  It's also a great idea for plugging in to an existing framework or application as you don't get a lot of extra bloat.

Knockout is easy to implement, easy to learn, and can introduce powerful data binding in the smallest or largest of applications.

**What problems is Knockout.js solving and how is that benefiting you?**

We're trying to create web applications for dynamic data collection.  This data needs to be collected out in the field using mobile devices.  With Knockout, we're able to use the same business logic for both online and offline functionality by using a combination of appcache and indexdb, which means our users are able to have the same experience online and offline.

  ### 38. Great and highly focused MVVM framework

**Rating:** 5.0/5.0 stars

**Reviewed by:** Verified User in Information Technology and Services | Mid-Market (51-1000 emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

Knockout.js is a great DOM manipulation and lightweight data model tool, just MVVM not less, not more.

Knockout.js is ideal for the experienced developer that do not need complex frameworks that handle initialisation cycle, routing, building and global project structure issues, you know how to do this your own or already have good libraries set.

On the other hand Knockout.js is good when you are not experienced front-end developer that just want some form logic to work smoothly and interactively or not have a lot of time to read 100 step tutorials.

Especially for those who love functional approach, Clojure, FRP and so on, Knockout provides computed and observables that is very convenient and powerful enough to build familiar computation pipeline with a very small amount of code and declarations.

Due to the knockout's focus on essential things, i don't think there will be moment when Knockout.js will gone "old", or "unfashioned" loosing some global holywar about most elegant MVVM implementation. Hammer that you are using every day is not about fashion and there is no superhacks or monstrous complexity inside to become old.

**What do you dislike about Knockout.js?**

There are problems with placing DOM branch under overlapping knockout.js control that is already binded, so you can't easily attach some small model with templates into existing view.

Fortunately this problem always completely gone with migration to the web components introduced in v3.0.

Web components have require.js support, but it's nominal.

Performance is good but you should be aware that for all MVVM framework model state changes should be throttled and managed gently when you using a lot of entities or making projects for the mobile devices.

And it's a little bit strange to see knockout evangelists talking about it mostly on MS С# conferences. Great offer to the wrong address :)

**Recommendations to others considering Knockout.js:**

Just try it seeing and playing with examples http://knockoutjs.com/examples/
It will not take a lot of your time but could give you a powerful tool in your libraries arsenal.

**What problems is Knockout.js solving and how is that benefiting you?**

Knockout.js was core JS library for all web front-end projects of our company. Including user profile, product licenses management, web-based remote access clients and so on.

  ### 39. Great library to simply bind the results of an ajax request or doing some client side functionality

**Rating:** 4.5/5.0 stars

**Reviewed by:** Luis P. | Co Founder & Full Stack Developer, Information Technology and Services, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

Very straightforward, learning does not take that long, very easy to grasp if you are already familiar with the MVVM pattern it provides some nice separation of concerns

**What do you dislike about Knockout.js?**

The html binding sintax is not that clean 

**Recommendations to others considering Knockout.js:**

Try it out, if you do not have experience with binding it will be a great library to start with

**What problems is Knockout.js solving and how is that benefiting you?**

Web apps/sites that require some client side functionality

  ### 40. A solid little data binding library

**Rating:** 3.5/5.0 stars

**Reviewed by:** Tyler W. | Lead Software Developer, Information Technology and Services, Mid-Market (51-1000 emp.)

**Reviewed Date:** March 01, 2016

**What do you like best about Knockout.js?**

It's small and focused. It does one thing, and does it well.

**What do you dislike about Knockout.js?**

Support for older browsers causes the syntax to be a little wacky. Also, some features are undocumented and you've got to pore through the source code to solve some problems.

**Recommendations to others considering Knockout.js:**

Use it as a small data binding library and nothing else. There are better UI libraries and frameworks at the time of this writing.

**What problems is Knockout.js solving and how is that benefiting you?**

We are using it as a data-binding library, and it solves that well.

  ### 41. Knockout.js review by a full stack developer

**Rating:** 4.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Small-Business (50 or fewer emp.)

**Reviewed Date:** February 24, 2016

**What do you like best about Knockout.js?**

Knockout is simple, declarative, lightweight, and fast. It's an MVVM data binding library, not a framework and it does its job very well. I enjoy the push to separate concerns and make the UI data driven. It's a very active open source project and has greate browser compatibility.

**What do you dislike about Knockout.js?**

With simplicity you get what you signed up for. I don't really dislike anything about knockout itself, but some people may see the fact that you will need other libraries/frameworks to build an enterprise server side data driven application.

**Recommendations to others considering Knockout.js:**

Read the docs, it covers almost anything you need.

**What problems is Knockout.js solving and how is that benefiting you?**

I'm building mobile/tablet/desktop web applications for personal and professional project. Knockout is easy to get started with and makes prototyping simple. 

  ### 42. I use knockout js as the main javascrpt library for all of my web application projects.

**Rating:** 4.0/5.0 stars

**Reviewed by:** John D. | Software Developer, Computer Software, Mid-Market (51-1000 emp.)

**Reviewed Date:** February 26, 2016

**What do you like best about Knockout.js?**

I love the concept of observable and being able to seamlessly bind them to any html element.

**What do you dislike about Knockout.js?**

It can be very confusing to apply bindings from multiple knockout view models at the same time. 

**What problems is Knockout.js solving and how is that benefiting you?**

fast and responsive UI that is bound directly to custom view models that match my database models. This makes it really nice to load and save data from my database into the knockout view models.

  ### 43. Excellent data binding framework

**Rating:** 3.5/5.0 stars

**Reviewed by:** Roberto C. | Small-Business (50 or fewer emp.)

**Reviewed Date:** February 28, 2016

**What do you like best about Knockout.js?**

It does one thing and does it right. Which is databinding.

**What do you dislike about Knockout.js?**

That is not so popular as react and doesn't support all things as angular.

**Recommendations to others considering Knockout.js:**

If you are a Microsoft shop, It could be an option for front end development since  Microsoft still supports it.

**What problems is Knockout.js solving and how is that benefiting you?**

HTML and JavaScript are the programming languages to learn front end development. KnockoutJS definetively helps with best practices using data binding.

  ### 44. I've used KnockoutJS professionally for several years

**Rating:** 3.5/5.0 stars

**Reviewed by:** Nathan W. | Principal Software Engineer, Financial Services, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 29, 2016

**What do you like best about Knockout.js?**

I like the focus on once core concept: observables

**What do you dislike about Knockout.js?**

Knockout has become dated: It's tried to keep up by adding features like components, but it's fighting against it's own design in order to do so.

**What problems is Knockout.js solving and how is that benefiting you?**

Front-end development. Better, more maintainable front-ends.

  ### 45. I am Sr. Software Engineer, working in Web technologies.

**Rating:** 4.0/5.0 stars

**Reviewed by:** Suleman A. | Principal Software Engineer | Full Stack | MERN/MEAN Stack | Node/Express, Small-Business (50 or fewer emp.)

**Reviewed Date:** February 26, 2016

**What do you like best about Knockout.js?**

Simple binding, very interactive to enhance user experience. :)

**What do you dislike about Knockout.js?**

To test in multiple browsers and specially to handle in old IE stuff!! :(

**What problems is Knockout.js solving and how is that benefiting you?**

To provide instructions to users while reset/typing password!!

  ### 46. Better frameworks available

**Rating:** 1.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Small-Business (50 or fewer emp.)

**Reviewed Date:** February 28, 2016

**What do you like best about Knockout.js?**

Powerful template based bindings make it easy to do quick data-binding. 

**What do you dislike about Knockout.js?**

Annoying to wrap all types in ko.observable.
No idea how to use with ES6
Data binding probably too complicated for large app
Error in binding syntax difficult to debug
React's single direction data flow easier to understand

**What problems is Knockout.js solving and how is that benefiting you?**

Can be used to build software if you stick rigidly to conventions

  ### 47. Knockout.js is fun to use

**Rating:** 5.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Mid-Market (51-1000 emp.)

**Reviewed Date:** February 25, 2016

**What do you like best about Knockout.js?**

Data binding is really nice. Knockout components are awesome.

**What do you dislike about Knockout.js?**

It's not really a framework so there's no defined coding patterns you have to follow. It's easy to do the same thing quite differently.

**What problems is Knockout.js solving and how is that benefiting you?**

We use Knockout on a modern web application. Knockout components are used extensively.

  ### 48. Easy and powerful

**Rating:** 5.0/5.0 stars

**Reviewed by:** Verified User in Computer Software | Mid-Market (51-1000 emp.)

**Reviewed Date:** March 01, 2016

**What do you like best about Knockout.js?**

Good examples and tutorials in official website and other websites.

**What do you dislike about Knockout.js?**

At first it looked confusing. But it was my first experience with MVVC.

**Recommendations to others considering Knockout.js:**

Read documentation and try some tutorials before fully going in.

**What problems is Knockout.js solving and how is that benefiting you?**

Making ASP.NET MVC website more responsive and more user friendly


## Knockout.js Discussions
  - [How do I download knockout JS?](https://www.g2.com/discussions/how-do-i-download-knockout-js) - 1 comment
  - [Is knockout JS dead?](https://www.g2.com/discussions/is-knockout-js-dead) - 1 comment

- [View Knockout.js pricing details and edition comparison](https://www.g2.com/products/knockout-js/reviews?section=pricing&secure%5Bexpires_at%5D=2026-06-23+23%3A34%3A39+-0500&secure%5Bsession_id%5D=d7f8b384-de61-44e5-98ed-44468db264f9&secure%5Btoken%5D=2275b96946b4a19143e91d7c4fccb5c5608503c2ef180bab36b5d9ca7201841a&format=llm_user)

## Knockout.js Features
**JavaScript Frameworks**
- Libraries
- Community
- Widgets
- Browser Support
- Graphical Visualization
- Mobile Support

## Top Knockout.js Alternatives
  - [Essential Studio](https://www.g2.com/products/essential-studio/reviews) - 4.5/5.0 (723 reviews)
  - [Progress Kendo UI](https://www.g2.com/products/progress-kendo-ui/reviews) - 4.4/5.0 (250 reviews)
  - [Chart.Js](https://www.g2.com/products/chart-js/reviews) - 4.4/5.0 (120 reviews)

