CINXE.COM
Application compatibility & feature support for macOS, iOS & Windows — RoaringApps
<!DOCTYPE html> <html lang="en" ng-app="RoaringApps"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="Crowd-sourced application compatibility for macOS, iOS and Windows."> <meta name="keywords" content="mac,macos,mac os x,mojave,catalina,big sur,monterey,apple silicon,arm macs,m1 macs,catalyst apps,32-bit apps,app,application,application compatibility,apple,roaringapps,mac app store,table,windows,ios,ios 14,ios 15"> <title> Application compatibility & feature support for macOS, iOS & Windows — RoaringApps </title> <!-- Stylesheets --> <link rel="stylesheet" href="/assets/css/site-2-6-4.css"> <!-- Webfonts --> <link href='https://fonts.googleapis.com/css?family=Lato:100,400,700,100italic,400italic,700italic|Rancho|Merriweather+Sans:400,300,300italic,400italic,700,700italic|Cookie' rel='stylesheet' type='text/css'> <!--[if lt IE 9]> <script src="/assets/js/ie8-responsive-file-warning.js"></script> <![endif]--> <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <![endif]--> <!-- Favicons --> <link rel="shortcut icon" href="/assets/ico/favicon.png"> <link rel="shortcut icon" href="/favicon.ico"> <!-- Angular $location.html5Mode = true requires this --> <base href="/"> <script async src="https://www.googletagmanager.com/gtag/js?id=G-3G6DX7LY1W"></script> <script> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); gtag('config', 'G-3G6DX7LY1W'); </script> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script type="text/javascript"> (adsbygoogle = window.adsbygoogle || []).push({ google_ad_client: "ca-pub-4932023458712014", enable_page_level_ads: true }); </script> <script src="/assets/js/vendor/modernizr.js" data-cfasync='true'></script> <!-- First input delay polyfill - used by Firebase Performance Monitoring. Ref: https://firebase.google.com/docs/perf-mon/get-started-web Ref2: https://github.com/GoogleChromeLabs/first-input-delay --> <script type="text/javascript"> ! function(n, e) { var t, o, i, c = [], f = { passive: !0, capture: !0 }, r = new Date, a = "pointerup", u = "pointercancel"; function p(n, c) { t || (t = c, o = n, i = new Date, w(e), s()) } function s() { o >= 0 && o < i - r && (c.forEach(function(n) { n(o, t) }), c = []) } function l(t) { if (t.cancelable) { var o = (t.timeStamp > 1e12 ? new Date : performance.now()) - t.timeStamp; "pointerdown" == t.type ? function(t, o) { function i() { p(t, o), r() } function c() { r() } function r() { e(a, i, f), e(u, c, f) } n(a, i, f), n(u, c, f) }(o, t) : p(o, t) } } function w(n) { ["click", "mousedown", "keydown", "touchstart", "pointerdown"].forEach(function(e) { n(e, l, f) }) } w(n), self.perfMetrics = self.perfMetrics || {}, self.perfMetrics.onFirstInputDelay = function(n) { c.push(n), s() } }(addEventListener, removeEventListener); </script> <!-- Sentry.io error monitoring --> <script src="https://js.sentry-cdn.com/9bccfd17b53521da4d6c21b201931d8c.min.js" crossorigin="anonymous"></script> <script> window.ENVIRONMENT = 'production'; </script> </head> <body class="{{bodyClass}}homepage" ng-cloak> <a class="sr-only" href="#content">Skip to main content</a> <div class="wrapper"> <header class="navbar navbar-blank navbar-index" role="banner" ng-controller="HeaderCtrl"> <div class="container"> <nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation"> <ul class="nav navbar-nav navbar-left"> <li class="dropdown index-view-settings-dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown"> <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-adjust" /> </svg> </a> <ul class="dropdown-menu" role="menu"> <li> <a href="#" ng-click="changeView('dawn')">Dawn</a> </li> <li> <a href="#" ng-click="changeView('daytime')">Day</a> </li> <li> <a href="#" ng-click="changeView('dusk')">Dusk</a> </li> <li> <a href="#" ng-click="changeView('nighttime')">Night</a> </li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-right"> <li class="dropdown account-dropdown" ng-if="user"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{user.username}}</a> <ul class="dropdown-menu pull-right" role="menu"> <li> <a href="/account">Account</a> </li> <li> <a href="/logout" ng-click="logout($event)">Log out</a> </li> </ul> </li> <li ng-if="!user"> <a href="#" data-toggle="modal" data-target="#modal-register" class="account-register">Register</a> </li> <li ng-if="!user"> <a href="#" data-toggle="modal" data-target="#modal-signin" class="account-signin">Sign in</a> </li> </ul> </nav> </div> </header> <section id="main" ng-controller="HomeCtrl" ng-class="{'overlay-in': state.overlayIn }"> <div class="ng-wrapper"> <div class="container {{ state.time }}"> <div class="home-svg-background"> <div class="sky-bg bg-dawn"></div> <div class="sky-bg bg-day"></div> <div class="sky-bg bg-dusk"></div> <div class="sky-bg bg-night"></div> <!-- Mojave SVG --> <svg id="svg-mojave-bg" width="2000px" height="1165px" viewBox="0 0 2000 1165" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <path d="M0.430664062,507.239258 C2.63704427,507.701497 4.41210938,507.352865 5.75585938,506.193359 C7.09960938,505.033854 8.94140625,505.241108 11.28125,506.815121 L16.0039063,511.316406 C16.9576823,513.255208 18.2799479,513.963216 19.9707031,513.44043 C21.6614583,512.917643 23.9632161,510.850586 26.8759766,507.239258 L30.8994141,506.815121 L33.0566406,509.531286 L40.3154297,502.152344 L43.7099609,500.823242 L44.9599609,502.152344 C46.4417318,497.072266 47.9576823,494.849935 49.5078125,495.485352 C51.0579427,496.120768 52.4619141,497.378906 53.7197266,499.259766 L57.4130859,498.140625 L59.0917969,500.823242 L62.8828125,504.49318 L65.1201172,503.15918 L68.7197266,506.193359 C72.6754557,510.357422 76.0042318,512.773112 78.7060547,513.44043 C81.4078776,514.107747 85.2229818,515.837565 90.1513672,518.629883 C94.9625651,519.838216 97.4274089,519.838216 97.5458984,518.629883 C97.7236328,516.817383 101.735352,525.775391 104.919922,525.125 C109.99707,533.763672 132.694336,536.165039 137.138672,531.079102 C140.101562,527.688477 142.844076,527.688477 145.366211,531.079102 L150.842773,536.165039 L158.576172,531.079102 L163.957031,536.165039 C166.641927,531.287435 168.209961,529.220378 168.661133,529.963867 C169.112305,530.707357 170.620443,531.973958 173.185547,533.763672 L179.068359,536.165039 C183.953776,542.297201 187.719727,545.13444 190.366211,544.676758 C193.012695,544.219076 195.935221,543.482422 199.133789,542.466797 C200.329102,540.080729 201.539388,538.742839 202.764648,538.453125 C203.989909,538.163411 206.741536,540.237956 211.019531,544.676758 C215.412109,541.981445 217.31901,540.633789 216.740234,540.633789 C216.161458,540.633789 216.929362,541.600586 219.043945,543.53418 L222.519531,542.466797 L226.513672,550.048828 L233.751953,550.048828 L242.492188,555.354492 L247.979492,555.354492 C253.919596,556.430013 258.345378,556.430013 261.256836,555.354492 C264.168294,554.278971 267.334635,553.067383 270.755859,551.719727 L276.858398,556.881836 L295.019531,556.881836 L296.111328,665.529297 L0.430664062,677.821289 L0.430664062,507.239258 Z" id="bg-hill-left-1" fill="#D8D8D8"></path> <path d="M0.408203125,535.774414 C0.408203125,535.774414 2.43619792,535.099935 6.4921875,533.750977 C9.65950521,535.691081 11.390625,537.099935 11.6855469,537.977539 C11.9804687,538.855143 13.5820312,540.770182 16.4902344,543.722656 L22.7011719,548.213867 L28.0976562,546.587891 L31.6230469,550.392578 L38.5136719,551.43457 L42.5410156,555.125 L48.6464844,555.125 L51.6074219,559.263672 C64.0657552,566.343099 71.069987,569.938802 72.6201172,570.050781 C74.9453125,570.21875 81.4267578,576.297852 85.3603516,575.744141 C89.2939453,575.19043 93.4023437,573.166992 94.9462891,573.845703 C95.9755859,574.298177 97.3919271,574.93099 99.1953125,575.744141 L105.734375,575.744141 L110.724609,577.354492 L118.675781,575.744141 L118.675781,578.986328 L121.43457,563.617188 L125.635742,561.033203 L129.274414,559.263672 L140.895508,556.368652 L145.475586,561.033203 L151.776367,562.15918 L156.984375,561.033203 L163.436523,565.466797 L167.925781,567.966797 L169.541992,565.466797 L177.563477,573.845703 L184.245117,578.986328 L196.081055,584.105469 L207.749023,584.105469 L207.749023,644.367188 L0.408203125,650.213867 C0.408203125,573.920898 0.408203125,535.774414 0.408203125,535.774414 Z" id="bg-hill-left-2" fill="#8A8A8A"></path> <path d="M0.375976562,564.975586 L6.53808594,560.162109 C9.04589844,557.23112 10.3574219,556.498372 10.4726562,557.963867 C10.5878906,559.429362 13.5654297,558.696615 19.4052734,555.765625 L28.1171875,557.963867 L33.0527344,565.987305 L36.0126953,564.975586 L39.4111328,569.986328 L45.9541016,577.214844 L57.9951172,584.701172 L69.4658203,594.069336 L78.3427734,604.807617 L82.6220703,603.71582 L84.8964844,609.691406 L90.6992187,609.691406 L100.544922,609.691406 L109.701172,615.146484 L109.701172,627.310547 L5.41015625,652.859375 L0.375976562,652.859375 L0.375976562,564.975586 Z" id="bg-hill-left-3" fill="#202020"></path> <path d="M2000.5791,500.544922 L1998.35547,501.594727 L1991.0498,496.999023 C1986.16504,495.467122 1983.44108,495.467122 1982.87793,496.999023 C1982.31478,498.530924 1980.76497,499.712891 1978.22852,500.544922 L1971.0293,501.594727 C1968.75781,505.484049 1966.63151,507.69694 1964.65039,508.233398 C1962.66927,508.769857 1961.13672,508.501628 1960.05273,507.428711 L1956.21191,510.601562 C1952.29069,509.897786 1949.35384,510.526367 1947.40137,512.487305 C1944.47266,515.428711 1916.96875,525.930664 1912.11523,526.287109 C1908.87956,526.52474 1905.28711,526.643555 1901.33789,526.643555 L1898.20898,529.188477 L1894.00586,529.188477 L1891.71094,532.511719 L1883.18945,532.511719 L1881.90234,536.422852 L1878.58984,534.683594 L1872.8916,538.092773 L1866.01465,538.092773 L1861.61328,538.092773 L1848.37695,534.683594 L1846.79004,536.422852 L1842.05078,536.422852 C1836.35156,534.103841 1832.82292,533.524089 1831.46484,534.683594 C1830.10677,535.843099 1829.42773,536.979492 1829.42773,538.092773 L1823.0332,540.5 L1817.04199,539.199219 L1814.65918,542.972656 C1812.50163,541.324219 1810.86849,540.5 1809.75977,540.5 C1808.65104,540.5 1806.95703,542.070964 1804.67773,545.212891 L1801.08789,548.265625 L1795.37207,548.265625 L1791.95801,553.508789 L1779.46973,555.652344 L1774.87305,559.168945 C1764.51953,552.994466 1758.58724,550.163411 1757.07617,550.675781 C1755.5651,551.188151 1751.72396,552.499674 1745.55273,554.610352 L1739.84277,555.652344 L1737.52734,558.014648 C1734.71549,555.763997 1733.01497,554.976562 1732.42578,555.652344 C1731.83659,556.328125 1730.47396,555.613607 1728.33789,553.508789 L1723.81836,550.675781 C1716.44466,557.147786 1712.65951,560.655599 1712.46289,561.199219 C1712.26628,561.742839 1710.2334,562.014648 1706.36426,562.014648 C1700.32454,563.27181 1696.98535,564.036458 1696.34668,564.308594 C1695.70801,564.580729 1694.11491,564.444661 1691.56738,563.900391 L1689.72754,562.014648 L1685.14453,568.267578 L1673.52344,565.335938 L1667.54883,568.267578 L1655.81738,567.134766 L1655.81738,663.885742 L2000.5791,671.015625 L2000.5791,500.544922 Z" id="bg-hill-right-1" fill="#D8D8D8"></path> <polygon id="bg-hill-right-2" fill="#A4A4A4" points="2000.31738 577.049805 1988.94141 573.693359 1983.39844 578.073242 1977.16895 575.883301 1968.8916 572.592773 1962.27344 578.073242 1952.68848 570.421875 1948.77734 570.421875 1942.79297 565.226562 1928.32031 565.226562 1917.90527 568.286133 1909.26758 568.286133 1905.86523 575.883301 1899.33203 579.788086 1893.6416 583.633789 1888.1709 578.073242 1880.66016 581.931641 1878.18848 583.633789 1872.50195 588.694336 1856.87207 591.539062 1849.07422 588.694336 1845.43164 590.004883 1847.78027 579.788086 1833.6084 570.421875 1829.72754 565.226562 1822.80469 564.026367 1819.94043 568.286133 1813.5127 566.452148 1811.0127 568.286133 1806.18652 575.883301 1802.32129 581.931641 1798.02734 583.633789 1784.33594 585.186523 1781.45508 692.674805 2000.31738 697.27832"></polygon> <path d="M2000,611.388672 L1990.73828,613.473633 L1975.94531,613.473633 L1969.52637,616.720703 L1957.05176,611.388672 L1948.08594,613.473633 L1936.56738,611.388672 L1927.96973,613.473633 L1923.22363,613.473633 L1913.93262,607.552734 C1889.73926,596.94987 1876.65527,590.393229 1874.68066,587.882812 C1872.70605,585.372396 1870.00586,583.778971 1866.58008,583.102539 L1858.11621,585.220703 L1851.72754,581.817383 L1844.72656,581.817383 L1841.43359,585.220703 L1839.09473,587.882812 L1837.35449,595.170898 L1833.74512,599.269043 L1830.72168,597.486328 L1828.7168,600.291992 L1823.47754,595.170898 L1814.5957,585.220703 L1809.67773,590.661133 L1798.17383,578.791992 L1792.64844,572.089844 L1791.27051,576.732422 L1786.24902,572.089844 L1777.14453,560.612305 L1775.55957,563.727539 L1772.40723,566.077148 L1766.82422,567.180664 C1768.11328,568.69043 1768.11328,570.326823 1766.82422,572.089844 C1765.53516,573.852865 1763.88249,577.095378 1761.86621,581.817383 L1755.19336,585.220703 L1749.76172,590.661133 L1743.4541,599.269043 L1743.4541,640.793945 L1990.73828,709.723633 L2000,709.723633 L2000,611.388672 Z" id="bg-hill-right-3" fill="#252525"></path> <path d="M2.60072418e-13,904.691406 C71.3023554,912.107333 384.464844,942.839844 443.554687,929.882812 C509.22107,915.483699 592.363281,869.371094 639.429688,829.179687 C748.088604,736.392602 804.329242,707.352313 881.675781,690.398437 C944.15029,676.704418 1017.90978,663.308355 1159.01953,666.050781 C1376.47096,670.276885 1260.77142,581.396556 1112,515.746094 C1004.19141,468.171875 887.820791,426.405167 904.929688,423.417969 C935.625,418.058594 936.785156,419.894531 1021.92188,413.003906 C1074.69901,408.732336 1118.3556,396.116418 1147.19922,385.480469 C1164.88429,378.959182 1180.19867,375.271035 1179.21875,368.558594 C1174.55431,363.539492 1151.94003,373.899969 1118.26172,374.574219 C1068.85102,375.563436 996.964056,367.599726 934.007813,357.367187 C817.058594,330.9375 823.035156,350.992187 762.410156,374.574219 C701.785156,398.15625 463.726563,519.630859 4.53945698e-13,646.126953 C-7.81709482e-13,782.513672 9.76305817e-13,814.300781 2.60072418e-13,904.691406 Z" id="main-hill-left" fill="#E7B2B2"></path> <path d="M2.3613056e-13,1165 C2.3625546e-13,1123.61719 8.8817842e-15,1002.59766 8.8817842e-15,903.777344 C208.091797,918.427734 406.969371,937.798506 442.339844,930.042582 C508.006226,915.643469 591.148437,869.530864 638.214844,829.339457 C746.873761,736.552372 803.114398,707.512083 880.460937,690.558207 C942.935447,676.864188 1016.69493,663.468125 1157.80469,666.210551 C1375.25612,670.436655 1259.55657,581.556326 1110.78516,515.905864 C1002.97656,468.331645 886.605947,426.564937 903.714844,423.577739 C934.410156,418.218364 935.570313,420.054301 1020.70703,413.163676 C1073.48417,408.892106 1167.34766,371.375 1180.69531,365.90625 C1302.89453,437.351562 1736.92578,604.351562 2000,690.558207 C2000,822.074219 2000,1069.77236 2000,1165 C1537.29265,1166.98236 142.547152,1165 2.3613056e-13,1165 Z" id="main-hill-right" fill="#F77F7F"></path> </svg> </div> <div class="row masthead"> <div class="col-xs-12 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4"> <div class="svg-logo-mark-wrapper"> <svg width="124px" height="63px" viewBox="0 0 124 63" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="logo-mark"> <g id="svg-logo-mark" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g id="2018-ra-logo-only"> <path d="M45.5149637,43.2553191 L57.6989002,13.0990181 C58.4707225,11.1886909 60.6402217,10.2690601 62.5468635,11.0393934 C64.4496256,11.8081592 65.3748711,13.9793344 64.6047916,15.8853479 L53.5466056,43.2553191 L45.5149637,43.2553191 Z" id="ra-logo-mark-a-left" fill="#52595C"></path> <path d="M77.6691999,43.2608696 L69.6974215,43.2608696 L58.674061,15.9770952 C57.9083385,14.0818654 58.8219995,11.9263558 60.7144302,11.1617642 C62.6030103,10.3987283 64.7615796,11.3133882 65.5271289,13.2081893 L77.6691999,43.2608696 Z" id="ra-logo-mark-a-right" fill="#52595C"></path> <path d="M43.0041375,45 L33.9346397,45 C32.8269661,45 31.5815203,45.8304805 31.159454,46.8391676 L29,52 L40.0330682,52 L43.0041375,45 Z" id="ra-logo-mark-ruler-left" fill="#31ABDF"></path> <path d="M94.0124576,45 L84.9909479,45 C83.8891352,45 82.6405011,45.8304805 82.2087917,46.8391676 L80,52 L91.0457507,52 L94.0124576,45 Z" id="ra-logo-mark-ruler-right" fill="#F85246" transform="translate(87.000000, 48.500000) scale(-1, 1) translate(-87.000000, -48.500000) "></path> <polygon id="ra-logo-mark-ruler-mid" fill="#75C16B" points="69.1922472 45 54.811867 45 51.8169397 52 72.183648 52"></polygon> </g> </g> </svg> </div> <h1 class="ra-logo-text">RoaringApps</h1> <p class="sub">Crowd-sourced application compatibility for macOS, iOS and Windows.</p> <div class="home-search-container"> <input type="search" name="home-search" id="home-search-input" placeholder="Search applications" ng-model="search.query" /> <ul class="home-search-results" ng-if="search.searching"> <li class="result"> <p class="searching-placeholder">Searching...</p> </li> </ul> <ul class="home-search-results" ng-if="!search.searching && search.empty"> <li class="result"> <p class="searching-placeholder">No applications found.</p> </li> </ul> <ul class="home-search-results" ng-if="search.results.length"> <li class="result" ng-repeat="app in search.results | orderBy:'-_searchRank'" ng-cloak> <a href="#" ng-click="addApp(app)"> <img ng-src="{{app.icon}}" alt="{{app.icon ? app.name + ' icon' : 'No icon'}}" class="{{app.icon ? 'search-result-has-icon' : 'search-result-no-icon'}}" /> <strong>{{app.name}}</strong> <span class="dev">{{app.developer}}</span> </a> </li> </ul> </div> <p> <a href="/apps" class="btn btn-outline btn-bold btn-white btn-large btn-icon"> View the compatibility table <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-chevron-right" /> </svg> </a> </p> </div> <div class="col-xs-12"> <div class="home-apps-list-container"> <div class="home-app-head {{ appsListCount === 0 ? 'out' : '' }}"> <div class="statuses"> <div class="platform platform-osx"> <svg class="icon" ng-click="removeApp(app.slug, $event)"> <use xlink:href="/assets/svg/icons.svg#shape-status-platform-osx" /> </svg> macOS Sequoia </div> <div class="platform platform-ios"> <svg class="icon" ng-click="removeApp(app.slug, $event)"> <use xlink:href="/assets/svg/icons.svg#shape-status-platform-ios" /> </svg> iOS 18 </div> <div class="platform platform-windows"> <svg class="icon" ng-click="removeApp(app.slug, $event)"> <use xlink:href="/assets/svg/icons.svg#shape-status-platform-windows" /> </svg> Windows 11 </div> </div> </div> <ul class="home-app-list {{ appsListCount === 0 ? 'out' : '' }}"> <li class="home-app {{app._class}}" ng-repeat="app in appsList"> <a href="/app/{{app.slug}}" class="app-meta"> <img ng-src="{{app.icon}}" alt="{{app.icon ? app.name + ' icon' : 'No icon'}}" /> <h5>{{app.name}}</h5> <span class="dev">{{app.developer}}</span> <a href="#" class="remove-app" ng-click="removeApp(app.slug, $event)"></a> <!-- <svg class="icon remove-app" ng-click="removeApp(app.slug, $event)"> <use xlink:href="/assets/svg/icons.svg#shape-cross" /> </svg> --> </a> <div class="statuses"> <div class="status platform-osx status-{{getStatus(app.statuses, 'osx', 'macos15')}} supported-{{app.platforms.indexOf('osx') >= 0 ? 'true' : 'false'}}"> <svg class="icon"> <use xlink:href="" ng-attr-xlink:href="{{'/assets/svg/icons.svg#shape-status-' + getStatus(app.statuses, 'osx', 'macos15')}}" /> </svg> <span class="status-result">{{ getStatusText(app.statuses, 'osx', 'macos15') }}</span> <span class="status-result" ng-if="app.platforms.indexOf('osx') < 0">Platform not supported</span> </div> <div class="status platform-ios status-{{getStatus(app.statuses, 'ios', 'ios18')}} supported-{{app.platforms.indexOf('ios') >= 0 ? 'true' : 'false'}}"> <svg class="icon"> <use xlink:href="" ng-attr-xlink:href="{{'/assets/svg/icons.svg#shape-status-' + getStatus(app.statuses, 'ios', 'ios18')}}" /> </svg> <span class="status-result">{{ getStatusText(app.statuses, 'ios', 'ios18') }}</span> <span class="status-result platform-not-supported" ng-if="app.platforms.indexOf('ios') < 0">Platform not supported</span> </div> <div class="status platform-windows status-{{getStatus(app.statuses, 'windows', '11')}} supported-{{app.platforms.indexOf('windows') >= 0 ? 'true' : 'false'}}"> <svg class="icon"> <use xlink:href="" ng-attr-xlink:href="{{'/assets/svg/icons.svg#shape-status-' + getStatus(app.statuses, 'windows', '11')}}" /> </svg> <span class="status-result">{{ getStatusText(app.statuses, 'windows', '11') }}</span> <span class="status-result platform-not-supported" ng-if="app.platforms.indexOf('windows') < 0">Platform not supported</span> </div> </div> </li> <li class="home-app home-app-add"> <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-circle-with-plus" /> </svg> </li> </ul> </div><!-- /.home-apps-list-container --> </div> </div> </div><!-- /.container --> <div class="home-content-wrapper {{ appsListCount === 0 ? 'up' : 'down' }}"> <div class="container-fluid home-more"> <div class="row home-alert-banner home-attract-banner"> <!-- <div class="col-xs-12"> <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-apple-cpu-2" /> </svg> <h3>Get ready for Apple Silicon Macs</h3> <div class="row"> <div class="col-xs-12 col-sm-6 col-sm-offset-3"> <p>Macs with brand new Apple Silicon M1 chips are here! We're keeping track of which apps have been updated for the new CPUs.</p> </div> </div> <p class="btn-container"><a href="/collections/list-of-apple-silicon-native-apps" class="btn btn-outline btn-bold">View apps ready for Apple Silicon</a> </p> </div> --> <div class="col-xs-12"> <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-status-platform-osx" /> </svg> <h3>Get ready for macOS Sequoia</h3> <div class="row"> <div class="col-xs-12 col-sm-6 col-sm-offset-3"> <p>macOS Sequoia has arrived, and RoaringApps is keeping track of which apps are working (and which aren't) on Apple's latest version of macOS.</p> </div> </div> <p class="btn-container"> <a href="/apps?platform=osx" class="btn btn-outline btn-bold">View macOS apps</a> </p> </div> </div> <div class="row home-boxes"> <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-mail" /> </svg> <h3>Email notifications</h3> <p>Subscribe for updates to the apps that matter to you and we'll shoot you an email when new compatibility information is available.</p> <p class="btn-container"> <a href="/account/watching" class="btn btn-outline btn-bold">Start watching applications</a> </p> </div> </div> <div class="col-xs-12 col-sm-4"> <div class="box"> <img src="/assets/img/ra-icon.png" alt="RoaringApps Mac icon" class="feature-icon" /> <h3>RoaringApps for your Mac</h3> <p>Download RoaringApps for your Mac to easily see and share compatibility information for only the apps you have installed.</p> <p class="btn-container"> <a href="/mac-app" class="btn btn-outline btn-bold">Download the app</a> </p> </div> </div> <div class="col-xs-12 col-sm-4"> <div class="box"> <i data-lucide="car" class="feature-icon"></i> <h3>iOS apps with CarPlay Support</h3> <p>Check out our new collection of iOS apps that integrate with Apple CarPlay.</p> <p class="btn-container"> <a href="/app-collection/ios-carplay-apps" class="btn btn-outline btn-bold">View apps with CarPlay support</a> </p> </div> </div> <!-- <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-apple-cpu-2" /> </svg> <h3>Apps on Apple Silicon</h3> <p>Macs with lightning fast Apple Silicon M1 & M2 chips are here! We're keeping track of which apps have been updated for the new CPUs.</p> <p class="btn-container"><a href="/collections/list-of-apple-silicon-native-apps" class="btn btn-outline btn-bold">View apps ready for Apple Silicon</a> </p> </div> </div> --> <!-- <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-uninstall" /> </svg> <h3>32-bit app check</h3> <p>32-bit apps are no longer be supported in macOS Catalina. RoaringApps helps you check which apps you might need to find a replacement for.</p> <p class="btn-container"><a href="/collections/list-of-32-bit-macos-apps" class="btn btn-outline btn-bold">View 32-bit apps</a> </p> </div> </div> --> <!-- <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-apple-cpu-2" /> </svg> <h3>Get ready for Apple Silicon Macs</h3> <p>Macs with a brand new Apple Silicon chipset will be arriving soon. We're keeping track of which apps have been updated for the new CPUs.</p> <p class="btn-container"><a href="/collections/list-of-apple-silicon-native-apps" class="btn btn-outline btn-bold">View apps ready for Apple Silicon</a> </p> </div> </div> --> <!-- <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-app-window" /> </svg> <h3>Catalyst apps are here!</h3> <p>With the release of macOS Catalina came <em>Catalyst apps:</em> built for iPad, now available on macOS. We're keeping track of all Catalyst apps as they drop.</p> <p class="btn-container"><a href="/collections/list-of-macos-catalyst-apps" class="btn btn-outline btn-bold">View Catalyst apps</a> </p> </div> </div> --> <!-- <div class="col-xs-12 col-sm-4"> <div class="box"> <svg class="icon feature-icon"> <use xlink:href="/assets/svg/icons.svg#shape-status-platform-windows" /> </svg> <h3>App compatibility for Windows 11</h3> <p>Whether you're preparing for a shiny new gaming laptop or about to finally ditch XP, we're here to help you with your next Windows PC upgrade.</p> <p class="btn-container"><a href="/apps?platform=windows" class="btn btn-outline btn-bold">View Windows apps</a> </p> </div> </div> --> </div><!-- /.row --> </div><!-- /.container-fluid --> <div class="container-fluid home-more-2"> <div class="row"> <div class="col-xs-12 col-md-5 col-md-offset-1 col-lg-4 col-lg-offset-3"> <p><strong>New!</strong> The RoaringApps newsletter is arriving soon, keeping you across all things RoaringApps, macOS and iOS.</p> <p>Subscribe to the newsletter now to stay in the know.</p> </div> <div class="col-xs-12 col-md-4 col-md-offset-1 col-lg-offset-0"> <p> <a href="/newsletter/join" class="btn btn-outline btn-bold btn-white btn-large btn-icon"> Join the newsletter <svg class="icon"> <use xlink:href="/assets/svg/icons.svg#shape-chevron-right" /> </svg> </a> </p> </div> </div> </div> <div class="container-fluid home-more-3"> <div class="row"> <div class="col-xs-6 col-sm-3 col-lg-2 col-lg-offset-2"> <h4>App compatibility</h4> <ul> <li> <a href="/apps?platform=osx">Apps for macOS</a> </li> <li> <a href="/apps?platform=ios">Apps for iOS</a> </li> <li> <a href="/apps?platform=windows">Apps for Windows</a> </li> </ul> </div> <div class="col-xs-6 col-sm-3 col-lg-2"> <h4>Collections</h4> <ul> <li> <a href="/collections/list-of-apple-silicon-native-apps">Apps ready for Apple Silicon</a> </li> <li> <a href="/collections/list-of-macos-catalyst-apps">macOS Catalyst apps</a> </li> <li> <a href="/collections/list-of-32-bit-macos-apps">32-bit macOS apps</a> </li> <li> <a href="/collections/discontinued-macos-ios-apps">Discontinued apps</a> </li> </ul> </div> <div class="col-xs-6 col-sm-3 col-lg-2"> <h4>RoaringApps</h4> <ul> <li> <a href="/about">About RoaringApps</a> </li> <li> <a href="/mac-app">RoaringApps for your Mac</a> </li> <li> <a href="/help/contribute-to-roaringapps">Contribute</a> </li> <li> <a href="/legal">Privacy & Terms</a> </li> <li> <a class="bmc-button" target="_blank" href="https://www.buymeacoffee.com/roaringapps"> <img src="https://cdn.buymeacoffee.com/widget/assets/coffee%20cup.svg" alt="Support RoaringApps"> <span>Buy me a coffee</span> </a> </li> </ul> </div> <div class="col-xs-6 col-sm-3 col-lg-2"> <h4> </h4> <ul> <li> <a rel="me" href="https://mastodon.social/@roaringapps">Mastodon</a> </li> <li> <a href="/newsletter/join">Newsletter</a> </li> <li> <a href="/contact">Contact</a> </li> <li> <a href="/account">My account</a> </li> </ul> </div> </div> </div> </div><!-- /.home-content-wrapper --> </div> </section> </div> <!-- Modals --> <section class="the-modals" ng-controller="ModalCtrl"> <!-- Sign In --> <div class="modal fade narrow" id="modal-signin" tabindex="-1" role="dialog" aria-labelledby="modal-label-signin" aria-hidden="true"> <div class="modal-dialog"> <p class="modal-outside-meta modal-msg" ng-if="signinModalMsg">{{signinModalMsg}}</p> <div class="modal-content"> <div class="modal-body"> <form id="form-signin" ng-submit="login.submit()"> <div class="gravatar"></div> <input type="email" name="signin-email" ng-model="form.login.email" placeholder="Email address" /> <input type="password" name="signin-password" ng-model="form.login.password" placeholder="Password" /> <button class="btn btn-action" action="submit" name="signin-submit" ng-hide="login.submitting"> <span>Sign in</span> </button> <div class="btn btn-action modal-button-loader" ng-show="login.submitting"> <div class="spinner spinner-three-dots faster"> <div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div> </div> </form> </div> </div><!-- /.modal-content --> <p class="modal-outside-meta"> <a href="/account/forgot">Forgot?</a> <a class="pull-right" href="#" data-toggle="modal" data-target="#modal-register"><strong>Create an account</strong> </a> </p> </div> </div> <!-- Register / Create account --> <div class="modal fade narrow" id="modal-register" tabindex="-1" role="dialog" aria-labelledby="modal-label-register" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body"> <form id="form-register" ng-submit="register.submit()"> <div class="gravatar"></div> <input type="email" name="register-email" ng-model="form.register.email" placeholder="Email address" /> <input type="text" name="register-username" ng-model="form.register.username" placeholder="Username" /> <input type="password" name="register-password" ng-model="form.register.password" placeholder="Password" /> <button class="btn btn-action" action="submit" name="register-submit" ng-hide="register.submitting"> <span>Create account</span> </button> <div class="btn btn-action modal-button-loader" ng-show="register.submitting"> <div class="spinner spinner-three-dots faster"> <div class="bounce1"></div> <div class="bounce2"></div> <div class="bounce3"></div> </div> </div> </form> </div> </div><!-- /.modal-content --> <p class="modal-outside-meta">{{register.errors.join(' ')}}</p> </div> </div> <!-- Search --> <div class="modal fade search-modal" id="modal-search" tabindex="-1" role="dialog" aria-labelledby="modal-label-search" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-body"> <form id="form-search"> <input type="search" id="search-input" name="search" ng-model="form.search.query" placeholder="Search applications" autocomplete="off" /> <span class="search-result-count" ng-show="search.results.length > 0">{{search.results.length}} apps</span> </form> <p class="search-msg" ng-show="search.searching">Searching...</p> <p class="search-msg" ng-show="search.empty">No results</p> <ul class="search-results"> <li class="result" ng-repeat="app in search.results | orderBy:'-_searchRank'"> <a href="/app/{{app.slug}}"> <img ng-src="{{app.icon}}" alt="{{app.icon ? app.name + ' icon' : 'No icon'}}" class="{{app.icon ? 'search-result-has-icon' : 'search-result-no-icon'}}" onerror="this.style.display='none'" /> <strong>{{app.name}}</strong> <span class="dev">{{app.developer}}</span> </a> </li> </ul> </div> </div><!-- /.modal-content --> <p class="modal-outside-meta">{{register.errors.join(' ')}}</p> </div> </div> <!-- Moderate --> <div class="modal fade" id="modal-moderate" tabindex="-1" role="dialog" aria-labelledby="modal-label-moderate" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4>Moderator control panel</h4> </div> <div class="modal-body"> <form id="form-moderate"> <div class="row"> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="moderate-app-name">Application</label> <input type="text" name="moderate-app-name" id="moderate-app-name" ng-model="selectedApp.name" disabled /> </div> </div> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="moderate-app-slug">Slug</label> <input type="text" name="moderate-app-slug" id="moderate-app-slug" ng-model="selectedApp.slug" disabled /> </div> </div> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="moderate-app-developer">Developer</label> <input type="text" name="moderate-app-developer" id="moderate-app-developer" ng-model="selectedApp.developer" disabled /> </div> </div> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="moderate-app-url">URL</label> <input type="text" name="moderate-app-url" id="moderate-app-url" ng-model="selectedApp.url" disabled /> </div> </div> </div> <div class="form-group"> <p ng-if="!selectedApp.statuses">This application has no status reports.</p> </div> <div class="form-group"> <button class="btn btn-outline btn-danger" ng-click="moderate.delete(selectedApp.slug)">Delete app</button> <button class="btn btn-outline" ng-click="moderate.merge.chooseTo(selectedApp.slug)">Merge with...</button> <button class="btn btn-outline" ng-click="moderate.appCollection.add(selectedApp.slug)">Add to collection...</button> <button class="btn btn-outline">Update</button> </div> </form> </div> </div><!-- /.modal-content --> <p class="modal-outside-meta">For use only by approved RoaringApps moderators.</p> </div> </div> <!-- Feedback --> <div class="modal fade" id="modal-feedback" tabindex="-1" role="dialog" aria-labelledby="modal-label-feedback" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4>Submit Feedback</h4> </div> <div class="modal-body"> <p>I develop RoaringApps in my (rather limited) spare time, so sometimes I miss bugs here and there. If you notice something not quite working properly, or have an idea for the site, I'd love to hear from you.</p> <form id="form-feedback" name="feedbackForm" ng-submit="feedback.submit(feedbackForm.$valid)" novalidate> <!-- novalidate disables HTML5 validation, so we can use the angular validation --> <div class="row"> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="feedback-name">Name</label> <input type="text" name="feedback-name" id="feedback-name" ng-model="form.feedback.name" required /> </div> </div> <div class="col-xs-12 col-sm-6"> <div class="form-group"> <label for="feedback-email">Email (optional)</label> <input type="email" name="feedback-email" id="feedback-email" ng-model="form.feedback.email" /> </div> </div> </div> <div class="form-group"> <label for="feedback-comment">Comment</label> <textarea id="feedback-comment" ng-model="form.feedback.comment" required></textarea> </div> <div class="form-group form-action-area"> <input type="submit" value="Send feedback" class="btn btn-outline" ng-disabled="feedbackForm.$invalid" /> </div> <div class="form-group"> <p class="msg error" ng-if="feedback.errorMsg">{{feedback.errorMsg}}</p> <p class="msg success" ng-if="feedback.successMsg">{{feedback.successMsg}}</p> </div> </form> </div> </div><!-- /.modal-content --> </div> </div> <!-- Report comment --> <div class="modal fade" id="modal-report-comment" tabindex="-1" role="dialog" aria-labelledby="modal-label-report-comment" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4>Report comment</h4> </div> <div class="modal-body"> <p>Report this comment to help the moderators identify items that require attention.</p> <form id="form-report-comment" name="reportCommentForm" ng-submit="reportComment.submit(reportCommentForm.$valid)" novalidate> <!-- novalidate disables HTML5 validation, so we can use the angular validation --> <div class="row"> <div class="col-xs-12"> <div class="form-group"> <label for="report-comment-reason">Reason</label> <select name="report-comment-reason" id="report-comment-reason" ng-model="form.reportComment.reason" required> <option>Invalid advice</option> <option>Illegal/inappropriate</option> <option>Off-topic</option> <option>Personal attack</option> <option>Spam</option> <option>Other</option> </select> </div> </div> <div class="col-xs-12"> <div class="form-group"> <label for="report-comment-description">Description (optional)</label> <textarea id="report-comment-description" ng-model="form.reportComment.description"></textarea> </div> </div> <div class="col-xs-12"> <div class="form-group form-action-area"> <input type="submit" value="Submit report" class="btn btn-outline" ng-disabled="reportCommentForm.$invalid" /> </div> <div class="form-group"> <p class="msg error" ng-if="reportComment.errorMsg">{{reportComment.errorMsg}}</p> <p class="msg success" ng-if="reportComment.successMsg">{{reportComment.successMsg}}</p> </div> </div> </div><!-- /.row --> </form> </div> </div><!-- /.modal-content --> </div> </div><!-- /.modal (report comment) --> </section> <!-- JS and analytics only. --> <script src="/assets/js/production-2-6-4.js"></script> <script> if (typeof lucide !== undefined) lucide.createIcons(); </script> </body> </html>