Explore JavaScript news, updates, releases and some interesting libs tips in the 2019 first edition of JS digest:

JavaScript

Top 10 JavaScript Trends to Watch in 2019

  • Languages that compile to JavaScript

TypeScript, Elm, ClojureScript — we’ve watched them all for the past few years continue to inspire a smarter, safer and more elegant approach to coding. It’s a much-needed movement in the wild west of JavaScript.

  • GraphQL

The biggest success story of 2018. Don’t be part of the 17% of JS devs who still don’t know what it is, as this train is moving quick. GraphQL serves as the replacement for REST APIs, and it’s grown with incredible speed over the last two years.

  • PWAs

The rise of progressive web applications (PWAs) mean that web apps have become pretty much as good as mobile apps. Go to m.facebook.com and compare it with the actual Facebook mobile app. Can you see any difference? Because I can’t.

  • GatsbyJS

The story of Gatsby continues to amaze. In 2018, it raised $3.8M and has been on fire ever since.

Find out more on hackernoon.com.

Top JavaScript Frameworks and Topics to Learn in 2019

Visual comparison of the share of downloads:

Top JavaScript Frameworks

Learn more on JavaScript Scene.

New ES2018 Features

Another exciting addition to ES2018 is the finally() method. With this method, programmers will be able to execute a block of code regardless of the promise's fate. Let’s look at a simple example:

fetch('https://www.google.com')
        .then((response) => {
          console.log(response.status);
        })
        .catch((error) => { 
          console.log(error);
        })
        .finally(() => { 
          document.querySelector('#spinner').style.display = 'none';
        });
      

Features introduced in ES2018:

  • including asynchronous iteration,
  • rest/spread properties,
  • additions to the RegExp object.

Read more on css-tricks.com.

Frameworks / Libs

FBT - An internationalization framework

FBT is an internationalization framework for JavaScript designed to be both powerful and flexible, but also simple and intuitive. It helps with the following:

  • Organizing your source text for translation
  • Composing grammatically correct translatable UI
  • Eliminating verbose boilerplate for generating UI

FBT - An internationalization framework

Check facebookincubator.github.io for more.

React 16.6.0 Goodies

There are situations where a component re-renders, even if neither its state nor its props changed. That adds up and can be an expensive operation. That’s where React.memo() comes into play. It’s a higher-order component we can wrap around the child and, presto, now the child is shielded from unnecessary additional rendering.

const Child = props => {
        console.log("rendered");
        return <React.Fragment>{props.name}</React.Fragment>;
      }
      

By default, if making use of a component (even if its usage depends on a condition), then we import it into the file where you will be using it. React.lazy() can now handle the importation like this:

// Using React.lazy() to import the Counter component
      const MyCounter = lazy(() => import("./Counter"));
      const App = () => (
        <div>
          // Using Suspense to render a loading state while we wait for the Counter
          <Suspense fallback={<div>Loading...</div>}>
            <MyCounter />
          </Suspense>
        </div>
      );
      

There are cases where we might want to render a fallback UI before the component is ready to render.

Find out more on css-tricks.com.

ES Check

ES Check checks JavaScript files against a specified version of ECMAScript (ES) with a shell command. If a specified file's ES version doesn't match the ES version argument passed in the ES Check command, ES Check will throw an error and log the files that didn't match the check.

ES Check

Learn more on github.com.

Luxon

Luxon is a library for working with dates and times in Javascript.

Luxon

Luxon

Read more on moment.github.io.

Spectrum

Spectrum is a cross-platform image transcoding library. It can easily be integrated into an Android/iOS project and it is designed to efficiently perform image operations on mobile platforms.

By depending directly on low level codecs libraries Spectrum has the ability of controlling and surfacing some options that are not typically exposed by platform frameworks. For example, some JPEG-to-JPEG operations such as cropping can be executed lossless.

Spectrum

Check for more on libspectrum.io.

Browsers

Fenix V1.0

Under the internal name Fenix ​​Mozilla is working on a new browser for Android. This article provides the first information as well as pictures of Fenix.

Fenix V1.0

Fenix V1.0

Learn more on soeren-hentzschel.at and github.com.

Chrome

The Coalition for Better Ads announced that it is expanding their initial Better Ads Standards beyond North America and Europe to cover all countries, worldwide. Following the Coalition’s lead, beginning July 9, 2019, Chrome will expand its user protections and stop showing all ads on sites in any country that repeatedly display these disruptive ads.

Raymond Hill, the developer behind uBlock Origin and uMatrix, said the changes contemplated by the Manifest v3 proposal will ruin his ad and content blocking extensions, and take control of content away from users.

"Users should have increased control over their extensions," the design document says. "A user should be able to determine what information is available to an extension, and be able to control that privilege."

But one way Google would like to achieve these goals involves replacing the webRequest API with a new one, declarativeNetRequest.

Read more on blog.chromium.org.

Firefox

Some users have multiple installations of Firefox, each in separate program folders. These separate Firefox installations previously shared a single profile by default. Beginning with Firefox version 67, Firefox will use a dedicated profile for each installation of Firefox (including Nightly, Beta, Developer Edition, and ESR installations) . This will make Firefox more stable when switching between installations on the same computer and will also allow you to run different Firefox installations at the same time. (Firefox 67)

In early 2020, Flash support will be completely removed from consumer versions of Firefox. The Firefox Extended Support Release (ESR) will continue to support for Flash until the end of 2020.

When Adobe stops shipping security updates for Flash at the end of 2020, Firefox will refuse to load the plugin. (Firefox 69)

Firefox Test Pilot is flying off into the sunset on January 22nd, 2019. Currently active experiments will remain installed for all users, and will be available on addons.mozilla.org after this date.

Check more on support.mozilla.org, here and Firefox Test Pilot.

Html-Css

Matter

Material Components in Pure CSS. This project is work in progress, I am open-sourcing Pure CSS Material Components.

Matter

Find out more on github.com.

Designing the Flexbox Inspector

The new Flexbox Inspector, created by Firefox DevTools, helps developers understand the sizing, positioning, and nesting of Flexbox elements. You can try it out now in Firefox DevEdition or join us for its official launch in Firefox 65 on January 29th.

The UX challenges of this tool have been both frustrating and a lot of fun for our team.

Flexbox Inspector

Read more on hacks.mozilla.org.

Law

European Union’s Copyright Directive

Copyright rules give news publishers rights over how their work is used. Europe is updating these rules for this digital age, and that’s a move Google supports. But the European Parliament’s version of a new copyright directive—specifically Article 11 and its recital 32—will have unintended consequences for smaller news publishers, limit innovation in journalism and reduce choice for European consumers. We urgently call on policymakers to fix this in the final text of the directive.

European Union’s Copyright Directive. Google search

Find out more on blog.google.

The 773 Million Record "Collection #1" Data Breach

Collection #1 is a set of email addresses and passwords totalling 2,692,818,238 rows. It's made up of many different individual data breaches from literally thousands of different sources. (And yes, fellow techies, that's a sizeable amount more than a 32-bit integer can hold.)

In total, there are 1,160,253,228 unique combinations of email addresses and passwords.

The unique email addresses totalled 772,904,991.

There are 21,222,975 unique passwords.