Comparison of JavaScript-based web frameworks

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:SHORTDESC:

This is a comparison of web frameworks for front-end web development that are reliant on JavaScript code for their behavior.

General information

[edit | edit source]
Framework Version
compared
Size in KB Download link License Source language
Angular 21.0.0
17 Nov 2025
10300 10.3 MB MIT TypeScript
AngularJS 1.8.3
7 Apr 2022
AngularJS support has officially ended MIT JavaScript
Apache Royale 0.9.12
11 Dec 2024
19 19 KB (zipped) Apache ActionScript 3, MXML, CSS
Backbone.js 1.6.1
1 Apr 2025
190 190 KB MIT JavaScript
Dojo 1.17.3
13 Aug 2022
729 7.29 MB BSD & AFL JavaScript
Ember.js 6.7.0
10 Oct 2025
14200 14.2 MB MIT JavaScript
Enyo 2.7.0
1 Apr 2016
25 25 KB (core gzipped) Apache 2[1] JavaScript
Ext JS 7.9.0
22 Apr 2025
Variable GPL & Commercial[2] JavaScript
Google Web Toolkit 2.12.2
3 Mar 2025
109000 109 MB gwt-2.12.2.zip Apache Java
Htmx 2.0.8
25 Oct 2025
16 16.2 KB htmx.min.js.gz Zero-Clause BSD Javascript
jQuery (library) 3.7.1
28 Aug 2023
34 34.7 KB MIT JavaScript
jQWidgets 17.0.0
11 Aug 2023
198000 198 MB 198000 CC & Commercial[3] JavaScript
Knockout 3.5.1
Jul 2021
70 69.9 KB MIT JavaScript
MooTools 1.6.0
14 Jan 2016
58 58.1 KB MIT JavaScript
Prototype & script. aculo.us[4] Prototype:
1.7.3
22 Sep 2015
script.aculo.us: 1.9.0
23 Dec 2010
Variable MIT JavaScript
qooxdoo 7.9.2
13 Oct 2025
24800 24.8 MB LGPL & EPL JavaScript
React 19.2.0
01 Oct 2025
172 172 KB MIT JavaScript / TypeScript
SAP OpenUI5 1.141.2
22 Oct 2025
Variable Apache 2[5] JavaScript
SproutCore 1.11.2
2 May 2016
236 236 KB MIT JavaScript
Svelte 5.42.2
26 Oct 2025
2640 2.64 MB MIT JavaScript / TypeScript
Next.js 16.0.0
22 Oct 2025
139000 139 MB MIT JavaScript / TypeScript
SolidJS 1.9.9
24 Sep 2024
10600 1.06 MB MIT JavaScript / TypeScript
Astro 2.0.0
17 Oct 2024
2400 2.4 MB MIT JavaScript / TypeScript
React Router 7.11.0
17 Dec 2025
27.1 27.1 KB MIT JavaScript / TypeScript
Remix 2.17.2
29 Oct 2025
278 278 KB MIT JavaScript / TypeScript
Qwik 1.0.0
5 Oct 2024
54500 54.5 MB MIT JavaScript / TypeScript
Fresh 2.1.2
8 Oct 2025
10 10.3 KB MIT JavaScript / TypeScript
Preact 11.0.0
19 Aug 2025
1260 1.26 MB MIT JavaScript / TypeScript
Webix 11.2.0
25 Sep 2025
7480 7.48 MB GPL & Commercial[6] JavaScript
ZK 10.2.1
1 Jul 2025
Variable LGPL & GPL & ZOL[7] XML + Java (JavaScript optional)

High-level framework comparison

[edit | edit source]

JavaScript-based web application frameworks, such as React and Vue, provide extensive capabilities but come with associated trade-offs. These frameworks often extend or enhance features available through native web technologies, such as routing, component-based development, and state management. While native web standards, including Web Components, modern JavaScript APIs like Fetch and ES Modules, and browser capabilities like Shadow DOM, have advanced significantly, frameworks remain widely used for their ability to enhance developer productivity, offer structured patterns for large-scale applications, simplify handling edge cases, and provide tools for performance optimization. [8][9][10]

Frameworks can introduce abstraction layers that may contribute to performance overhead, larger bundle sizes, and increased complexity. Modern frameworks, such as React 18 and Vue 3, address these challenges with features like concurrent rendering, tree-shaking, and selective hydration. While these advancements improve rendering efficiency and resource management, their benefits depend on the specific application and implementation context. Lightweight frameworks, such as Svelte and Preact, take different architectural approaches, with Svelte eliminating the virtual DOM entirely in favor of compiling components to efficient JavaScript code, and Preact offering a minimal, compatible alternative to React. Framework choice depends on an application’s requirements, including the team’s expertise, performance goals, and development priorities. [8][9][10]

A newer category of web frameworks, including enhance.dev, Astro, and Fresh, leverages native web standards while minimizing abstractions and development tooling. [11][12][13] These solutions emphasize progressive enhancement, server-side rendering, and optimizing performance. Astro renders static HTML by default while hydrating only interactive parts. Fresh focuses on server-side rendering with zero runtime overhead. Enhance.dev prioritizes progressive enhancement patterns using Web Components. While these tools reduce reliance on client-side JavaScript by shifting logic to build-time or server-side execution, they still use JavaScript where necessary for interactivity. This approach makes them particularly suitable for performance-critical and content-focused applications. [8][9][10]

Features

[edit | edit source]
Angular
Feature detection[14] Yes Yes
[15]
Yes Yes
[16]
No
[17][18]
Yes
[19]
Yes Yes
[20]
No
[21]
Yes Yes No Yes
DOM wrapped[22] Yes Yes No Yes Yes Yes Yes No
[23]
No
[24][25]
Yes No Yes Yes
XMLHttpRequest
data retrieval
Yes Yes Yes
[26]
Yes Yes Yes Yes Yes
[27]
Yes
[28]
Yes Yes Yes Yes Yes
WebSocket Yes
[26]
Yes Yes Yes Yes No Yes
[28]
Yes
[29]
Yes Yes Via Plugin Yes
[30]
Server push data retrieval Yes
[31]
Yes
[32]
Yes
[33]
Yes
[31]
No Via Plugin Yes
[34]
Yes
Other data retrieval Yes: XML, HTML, CSV, ATOM, AMF, JSON Yes: XML, HTML, CSV, ATOM
[35]
Yes: XML, SOAP, AMF, Ext.Direct Yes: RPC, RequestFactory Yes: XML, HTML Yes: XML, JSON, CSV, TSV
[27]
Yes: XML, HTML Yes: XML, HTML, CS, JSON, JSArray, CSV
Drag and drop Yes Yes
[36]
Yes With plugin
[37]
With plugins
[38]
Yes
[39]
Yes
[40]
Yes
[41]
Yes Yes Yes Yes Yes
[42]
Simple visual effects Yes Yes Yes
[43]
Yes Yes Yes Yes Yes Yes
[44]
Yes Yes Yes Yes
[45]
Yes
[46]
Yes Yes
Animation /
advanced visual effects
Yes Yes
[47]
Yes
[48]
Yes Yes Yes Yes Yes
[49]
Yes Yes Yes
[45]
Yes Yes
[50]
Back button support /
history management
Yes
[51]
Yes Yes
[52]
Yes
[53]
Yes With plugins
[54]
No With plugin
[55]
Yes Yes Yes Yes Yes
Input form widgets & validation Yes Yes Yes
[56]
Yes Yes Yes:
Validation requires plugin[57]
With plugins
[58]
Yes
[59]
Yes Yes Yes Yes Yes Yes Yes
[60][61]
Grid Yes Yes
[62]
Yes Yes With plugins
[63]
Yes
[64]
With plugin
[65]
Yes Yes Yes Yes Yes
[66]
Hierarchical Tree Yes Yes
[67]
Yes
[68]
Yes
[69]
Yes With plugins
[70]
Yes
[71]
With plugins
[72]
Yes Yes
[73]
Yes Yes Yes
[74]
Rich text editor No Yes Yes
[75]
Yes
[76]
Yes With plugins
[77]
Yes
[78]
Yes
[79]
Yes Via plugin Yes Yes
[80]
Autocompletion tools No Yes
[81]
Yes Yes Yes
[82]
Yes
[83]
With plugin
[84]
Yes With plugins Yes Yes
HTML generation tools No Yes
[85]
Yes Yes Yes Yes
[78]
Yes
[86]
Yes Yes Yes Yes Yes
Widgets themeable / skinnable Yes Yes
[87]
Yes Yes
[88]
Yes
[89]
Yes
[90]
Yes Yes Yes Yes Yes Yes
GUI resizable panels and modal dialogs Yes Yes Yes Yes
[91]
Yes With plugins Yes
[92]
Yes
[93]
Yes Yes Yes
[94]
Yes
GUI page layout Yes Yes Yes With plugin
[95]
Yes
[96][97]
Yes
[93]
Yes Yes Yes
[94]
Yes
[98]
Canvas support Yes Yes
[99]
Yes Yes Yes With plugin
[100]
Yes
[101]
Yes
[102]
Yes Yes Yes
[103]
Yes
Mobile/tablet support (touch events) Yes Yes Yes
[104]
Yes Yes Yes With plugin
[105]
With plugin
[106]
Yes
[107]
With plugin
[108]
Yes Yes Yes Yes
[109]
Yes
[110]
Accessibility /
graceful degradation[111]
Yes Yes
[112]
No Yes Yes
[16]
Yes
[113]
Yes Yes
[114]
Yes No
[115]
Degradation: No
Accessibility: Yes
Yes Yes
[116]
ARIA compliant Yes
[112]
Yes
[16]
Yes
[117]
Yes
[114]
Yes No Yes Yes
[118]
Yes Yes
[119]
Developer tools, Visual design Yes
[120][121]
in progress
[122]
Yes
[123][124][125]
Yes Yes
[126][127]
Yes
[128][129][130]
Yes
[131][132]
Yes
[133]
No Yes Yes
[134][135]
Offline storage[136] Yes No
[137]
Yes Yes
[138]
Via Google Gears
[139]
With plugin
[140]
Yes
[141]
Yes Yes Yes Yes
Cross-browser 2d Vector Graphics[142] Yes
[143]
Yes With plugin
[144]
Yes
[101]
Yes
[145]
No Yes
[103]
Yes (via Raphael)[146]
Charting & Dashboard[147] Yes Yes
[148]
Yes
[149]
With plugin
[150][151]
Yes
[152][153]
No Yes
[154]
Yes
[155]
RTL Support in UI Components Yes Yes Yes Depends on the plugin used Yes
[114]
Yes Yes No

Browser support

[edit | edit source]
Framework Internet Explorer Mozilla Firefox Safari Opera Chrome Edge
Angular Latest and extended support release 2 most recent major versions Latest and previous stable version 2 most recent major versions
AngularJS (1.3) 8+ (9+) 4+ 5+ 11+ 30+
Apache Royale 9 (Edge --> 10) 21 6 15 23
Dojo 6+ 3+[156] 4[156] 10.50+[156] 3[156]
Ember.js 6+ 3+ 4+ 10.6+ 14+
Enyo 8+[157] >4[157] >5[157] >10[157]
Ext JS 8+ 45+ 11+ 43+ 64+[158]
Google Web Toolkit 8+ 1+ 5+ 9+ 1+
jQuery (3.x) 6+ (9+)[159] 2+[159] 3+[159] 9+[159] 1+[159]
jQWidgets 7+[160] 2+[160] 3+[160] 9+[160] 1+[160]
MooTools 6+ 2+ 3+ 9+ 1+
Prototype & script. aculo.us[4] 6+ 1.5+ 2.0.4+ 9.25+ 1+ (starting with 1.6.1RC3)
qooxdoo 6+ 2+ 3+ 9+ 2+
React
SAP OpenUI5[161] 11+ Latest Stable and ESR Last 2 Latest Version
SproutCore 6+ 3+ 4+ 9+ 1+
Svelte 21+ 6+ 15+ 23+ 12+
Vue 10+ 21+ 6+ 15+ 23+ 12+
ZK 6+ 2.0+ 3+ 9+ 2+
Webix 11+[162] 93+[162] 5+[162] 95+[162] 95+[162] 95+[162]

Notes

[edit | edit source]
  1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ a b c d e script.aculo.us is an add-on to Prototype.
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  9. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  10. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  14. ^ Feature detection is preferred by many to browser sniffing to support future browsers: Browser Detecting (and what to do Instead), Feature Detection: State of the Art Browser Scripting, Browser Feature Detection Archived 10 July 2017 at the Wayback Machine
  15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  16. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  21. ^ Feature detection all the way Archived 21 April 2009 at the Wayback Machine
  22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  26. ^ a b AJAX and Dojo Archived 9 February 2010 at the Wayback Machine
  27. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  28. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  29. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  30. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  31. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  32. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  33. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  34. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  35. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  36. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  37. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  38. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  39. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  40. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  41. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  42. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  43. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  44. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  45. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  46. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  47. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  48. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  49. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  50. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  51. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  52. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  53. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  54. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  55. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  56. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  57. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  58. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  59. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  60. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  61. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  62. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  63. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  64. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  65. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value). or Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value). or Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  66. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  67. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  68. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  69. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  70. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value)., Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  71. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  72. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  73. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  74. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  75. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  76. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  77. ^ markitup, jwysiwyg, htmlbox Archived 7 July 2009 at the Wayback Machine, WYMeditor Archived 3 June 2008 at the Wayback Machine
  78. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  79. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  80. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  81. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  82. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  83. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  84. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  85. ^ As of Dojo 1.3, the NodeList.addContent() api can be used to create content for example: dojo.query(".note").addContent("h4 NOTE: h4", "before");
  86. ^ MooTools Elements Archived 5 September 2008 at the Wayback Machine
  87. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  88. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  89. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  90. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  91. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  92. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  93. ^ a b Using MochaUI Library or JxLib Archived 18 February 2009 at the Library of Congress Web Archives
  94. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  95. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  96. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  97. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  98. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  99. ^ dojo.gfx Archived 9 March 2009 at the Wayback Machine
  100. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  101. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  102. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  103. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  104. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  105. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  106. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  107. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  108. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  109. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  110. ^ [1] Webix mobile/tablet support
  111. ^ All JavaScript frameworks can be written in an accessible way with graceful degradation, frameworks seen here which imply out-of-the-box accessibility have made a special effort to document best practices for their particular framework.
  112. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  113. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  114. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  115. ^ Qooxdoo's "Extreme JavaScript" paradigm Archived 12 October 2008 at the Wayback Machine
  116. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  117. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  118. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  119. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  120. ^ Wavemaker
  121. ^ Aptana Studio
  122. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  123. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  124. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  125. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  126. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  127. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  128. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  129. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  130. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  131. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  132. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  133. ^ Custom build, JS Linker, API generation, Unit test framework, etc. Archived 25 July 2008 at the Wayback Machine
  134. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  135. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  136. ^ JavaScript frameworks currently only have the ability to support offline storage by taking advantage of pre-installed browser extensions such as Google Gears. If a user does not have one of these supported extensions installed in their browser already then offline support will be unavailable to the framework. JavaScript framework developers interested in implementing Gears may want to start with the Gears Getting Started Guide.
  137. ^ o.DojoToolkit.Org/offline Archived 10 February 2010 at the Wayback Machine says "Dojo Offline is no longer supported after Dojo 1.3"
  138. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  139. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  140. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  141. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  142. ^ Some JavaScript libraries provide 2d graphics primitives that can be used for cross-browser vector graphics. These libraries rely on underlying technologies in the browser or plugins such as Canvas, SVG, VML, Flash, and Silverlight to do the actual rendering, but help isolate application and widget code from the rendering engine API differences
  143. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  144. ^ jQuery SVG plugin
  145. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  146. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  147. ^ Some JavaScript libraries include widgets for Charts, Gauges, and other data visualizations.
  148. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  149. ^ Chart API
  150. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  151. ^ jQuery Visualize Plugin Archived 9 July 2009 at the Wayback Machine
  152. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  153. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  154. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  155. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  156. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  157. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  158. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  159. ^ a b c d e Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  160. ^ a b c d e Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  161. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  162. ^ a b c d e f Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).