If the initial Bootstrap colors and styles are not changed or edited, different websites start looking the same even if they have nothing to do with each other and they are made by different developers.
Development has been stalled for almost a year with no "final" release. When it finally releases it may not be utilizing the latest web technologies and will be instantly outdated. Many other frameworks are hitting the web that is much more modern.
Bootstrap's over-reliance on HTML classes for styling can get very messy very quickly. There's also an overabundance of DOM elements which have a lot of classes and are more often than not nested inside DOM elements with even more classes. This gets problematic down the line because the maintainability of the project gets harder when the project starts to get large.
Documentation is thorough, well organized and full of live examples and templates ready for use. Every component and every part of the framework is explained and covered in depth.
Tons of classes have to be added to elements, not all are friendly or easy to remember. The default styling is pretty bad although the typography is nice.
Bootstrap has an out-of-the box filesize of ~276K, which is pretty large considering it's just CSS. Most of those styles aren't even used in 90% of web pages built with Bootstrap. By only including the required styles it can be trimmed by 70%-75%.
Bootstrap is designed to get a site up and running quickly. Each of it's components is pre-configured to help with getting a site up and running quickly.
The grid layout with the predefined CSS elements and JavaScript components make it easier to have consistency across different browser versions and even different devices.
Bootstrap is very popular and has a large community. As a result of this it is much easier to find help with anything you might need. This also gives you a treasure trove of prebuilt components to use and add to your site.
If you don't want to download the full Bootstrap framework. Custom builds of Bootstrap can be created, including only the desired CSS, CSS components, and JavaScript components. This can be done directly from the Bootstrap website by simply choosing what components to download.
Bootstrap can be customized in a variety of ways. Either by overriding the default CSS styles with new CSS styles or by editing the .scss Bootstrap files.
Bootstrap is developed to be instantly compatible with all sizes of screens, so you don't have to worry about which device the user is accessing your site from. Yet if you prefer, you can disable responsiveness of Bootstrap.
Documentation could be written better and clearer, with many more example than they currently have. Sometimes hard to find solutions for detailed css problems.
Since Foundation is built to be customizable, it's default style may not be very appealing for most. While it's true that most production-ready websites shouldn't be using the default style of a css framework (they would all end up looking the same), this is even more true for Foundation.
Foundation has a feature called block grid. Block grid gives designers the power to divide the contents of an unordered list into a grid that is evenly spaced. Furthermore, Foundation also takes care of collapsing columns as well as removing gutters.
Foundation uses REMs instead of pixels, meaning you don't have to state an explicit height, width, padding, etc, for every device. Simply put, using REMs means you can just state font-size: 80%; and have the whole component (and its nested elements) shrink by 20%.
This is great for making your site mobile friendly. There is also a Sass function in Zurb that converts pixels to REMs so if you're used to thinking in pixels, you don't have to learn a different system.
React's virtual DOM is fast, but it requires storing elements in the virtual and real DOM increasing memory usage for the page. This can be a real problem for single-page webapps designed to be left running in the background.
React is built by Facebook engineers initially to be used only for their inner projects especially to solve the problem of building large complex applications with constantly changing data.
React can render it's components and data server side, then it sends those components as HTML to the browser.
This ensures faster initial loading time and SEO friendliness out of the box, since it's indexed as any other static website by search engines.
React does not do everything for the developer, it's merely a tool for building the UI of a web app. It does not have support for routing or models, at least not out of the box. While some missing features can be added through libraries, to start using React and use it in production, you still would need to have experience, or at least a good grasp on what the best libraries to use would be.
Requires learning a custom syntax, JSX, that has some gotchas and introduce complexity, a steeper learning curve, and incompatibility with other tools.
Though you can opt out from JSX and use vanilla JS instead. But that is not recommended since it adds a lot of unneeded complexity which JSX tries to avoid.
React's react.min.js is 145.5KB in size. It's much larger than some other libraries that offer roughly the same features and it's almost the same size as some MV* frameworks such as Angular or Ember that offer more features out of the box.
Although, it should be mentioned that sometimes having a smaller library may force developers to reinvent the wheel and write inefficient implementations on features that React already has. Ending up with a larger application that's harder to maintain and/or that has bad performance.
React gets a little verbose as applications get more complicated with more components. It's simply not as straightforward as simply writing HTML and JavaScript would be.
ReactJS can be used independently as the only library for building the front-end, or it can be used alongside JavaScript libraries such as jQuery, or even Angular.
Instead of relying on the DOM, React implements a virtual DOM from scratch, allowing it to calculate precisely what needs to be patched during the next screen refresh. This is orders of magnitude faster than fiddling with the DOM itself.
Since every single UI component is created independently in JavaScript, it becomes very easy to reuse them throughout your app without having to re-write them.
React's one-way data binding (or one-way data flow) means that it's easy to see where and how your UI is updated and where you need to make changes. It's also very easy to keep everything modular, fast and well-organized.
React has an official Chrome Extension which is used as a developing and debugging tool. It can be used to quickly and painlessly debug your application or view the whole application structure as it's rendered.
Flux is a platform agnostic pattern which can technically be used with any application or programming language.
One of Flux' main features is that it enforces uni-directional data flow which means that views do not change the data directly.
With React this is useful because this way it's easier to understand an application as it starts getting more complicated. By having two-way data binding, lead to unpredictable changes, where changing one model's data would end up updating another model. By using the Flux architecture, this can be avoided.
React has recently dropped support for Internet Explorer 8. While the library may still work on IE8, issues that affect only IE8 will not be prioritized and/or solved.
Many features in Semantic UI uses Javascript customization such as for Modal. This is unlike Bootstrap that can add Modal just with customizing the HTML attributes. Developers who plan to using Semantic UI must be familiar with Javascript or JQuery to get the most out of it.
Packages are much bigger when comparing to Twitter Bootstrap or Zurb Foundation. Semantic UI is really extremely large and it would be better to use specific modules and components, rather than the whole thing.
The whole Semantic-UI package is well organized, with every component neatly set up with it's own stylesheet and JavaScript file. This way you can load only the components you need for each page, minimizing the load time and file size.
UiKit is not a very popular framework, especially compared to other options. As such it may be hard to find learning resources other than the official documentation or it may be more likely for development of UiKit to be dropped than for another more popular framework
There are plenty of ready to use themes available from the official website. You can choose the theme that you want to use from the dropdown menu and then download the CSS, LESS or SASS file for that theme to use for the website.
Every aspect of the framework is designed to be modular, this way designers can easily choose which components to add to their stylesheet without risking to damage the overall style.
freeCodeCamp strongly encourages interacting with other learners and experienced programmers. They provide chatrooms which are always active and full of members happy to answer any questions you may have. Pair programming (programming with another user) is encouraged as a great way to work through some of their coding challenges.
There are also meetup groups where you can code in person with other freeCodeCamp students.
Due to freeCodeCamp being open source, you are able to contribute to the program that helped teach you how to code in the first place. It's a great way to give back and gain experience.
All courses used by freeCodeCamp are done in the browser, rather than students having to set up their own environment. This makes it much easier for beginners to get started.
Responsive Web Design Certification
Javascript Algorithms And Data Structures Certification
Front End Libraries Certification
Data Visualization Certification
Apis And Microservices Certification
Information Security And Quality Assurance Certification
There are currently two certificated available (Front End Development and Back End Development) that you can get once you've completed all the projects.
There is a third certificate in the works (Data Visualization).
Once you've completed all the courses and practice levels on freeCodeCamp, you are able to participate with other learners on developing software for non-profits. It's an amazing way to gain experience and build your portfolio as a developer, while helping out a non-profit organization.
The teaching content provided by freeCodeCamp tends to act more as an introduction than a solid learning resource. Unless you already have some prior experience, you won't have enough knowledge to get through the coding challenges and development projects without using outside learning resources to fill in the gaps.