pr Preparing for the Future with React Prereleases By reactjs.org Published On :: Tue, 22 Oct 2019 00:00:00 GMT To share upcoming changes with our partners in the React ecosystem, we’re establishing official prerelease channels. We hope this process will help us make changes to React with confidence, and give developers the opportunity to try out experimental features. This post will be most relevant to developers who work on frameworks, libraries, or developer tooling. Developers who use React primarily to build user-facing applications should not need to worry about our prerelease channels. React relies on a thriving open source community to file bug reports, open pull requests, and submit RFCs. To encourage feedback, we sometimes share special builds of React that include unreleased features. Because the source of truth for React is our public GitHub repository, it’s always been possible to build a copy of React that includes the latest changes. However it’s much easier for developers to install React from npm, so we occasionally publish prerelease builds to the npm registry. A recent example is the 16.7 alpha, which included an early version of the Hooks API. We would like to make it even easier for developers to test prerelease builds of React, so we’re formalizing our process with three separate release channels. Release Channels The information in this post is also available on our Release Channels page. We will update that document whenever there are changes to our release process. Each of React’s release channels is designed for a distinct use case: Latest is for stable, semver React releases. It’s what you get when you install React from npm. This is the channel you’re already using today. Use this for all user-facing React applications. Next tracks the master branch of the React source code repository. Think of these as release candidates for the next minor semver release. Use this for integration testing between React and third party projects. Experimental includes experimental APIs and features that aren’t available in the stable releases. These also track the master branch, but with additional feature flags turned on. Use this to try out upcoming features before they are released. All releases are published to npm, but only Latest uses semantic versioning. Prereleases (those in the Next and Experimental channels) have versions generated from a hash of their contents, e.g. 0.0.0-1022ee0ec for Next and 0.0.0-experimental-1022ee0ec for Experimental. The only officially supported release channel for user-facing applications is Latest. Next and Experimental releases are provided for testing purposes only, and we provide no guarantees that behavior won’t change between releases. They do not follow the semver protocol that we use for releases from Latest. By publishing prereleases to the same registry that we use for stable releases, we are able to take advantage of the many tools that support the npm workflow, like unpkg and CodeSandbox. Latest Channel Latest is the channel used for stable React releases. It corresponds to the latest tag on npm. It is the recommended channel for all React apps that are shipped to real users. If you’re not sure which channel you should use, it’s Latest. If you’re a React developer, this is what you’re already using. You can expect updates to Latest to be extremely stable. Versions follow the semantic versioning scheme. Learn more about our commitment to stability and incremental migration in our versioning policy. Next Channel The Next channel is a prerelease channel that tracks the master branch of the React repository. We use prereleases in the Next channel as release candidates for the Latest channel. You can think of Next as a superset of Latest that is updated more frequently. The degree of change between the most recent Next release and the most recent Latest release is approximately the same as you would find between two minor semver releases. However, the Next channel does not conform to semantic versioning. You should expect occasional breaking changes between successive releases in the Next channel. Do not use prereleases in user-facing applications. Releases in Next are published with the next tag on npm. Versions are generated from a hash of the build’s contents, e.g. 0.0.0-1022ee0ec. Using the Next Channel for Integration Testing The Next channel is designed to support integration testing between React and other projects. All changes to React go through extensive internal testing before they are released to the public. However, there are myriad environments and configurations used throughout the React ecosystem, and it’s not possible for us to test against every single one. If you’re the author of a third party React framework, library, developer tool, or similar infrastructure-type project, you can help us keep React stable for your users and the entire React community by periodically running your test suite against the most recent changes. If you’re interested, follow these steps: Set up a cron job using your preferred continuous integration platform. Cron jobs are supported by both CircleCI and Travis CI. In the cron job, update your React packages to the most recent React release in the Next channel, using next tag on npm. Using the npm cli: npm update react@next react-dom@next Or yarn: yarn upgrade react@next react-dom@next Run your test suite against the updated packages. If everything passes, great! You can expect that your project will work with the next minor React release. If something breaks unexpectedly, please let us know by filing an issue. A project that uses this workflow is Next.js. (No pun intended! Seriously!) You can refer to their CircleCI configuration as an example. Experimental Channel Like Next, the Experimental channel is a prerelease channel that tracks the master branch of the React repository. Unlike Next, Experimental releases include additional features and APIs that are not ready for wider release. Usually, an update to Next is accompanied by a corresponding update to Experimental. They are based on the same source revision, but are built using a different set of feature flags. Experimental releases may be significantly different than releases to Next and Latest. Do not use Experimental releases in user-facing applications. You should expect frequent breaking changes between releases in the Experimental channel. Releases in Experimental are published with the experimental tag on npm. Versions are generated from a hash of the build’s contents, e.g. 0.0.0-experimental-1022ee0ec. What Goes Into an Experimental Release? Experimental features are ones that are not ready to be released to the wider public, and may change drastically before they are finalized. Some experiments may never be finalized — the reason we have experiments is to test the viability of proposed changes. For example, if the Experimental channel had existed when we announced Hooks, we would have released Hooks to the Experimental channel weeks before they were available in Latest. You may find it valuable to run integration tests against Experimental. This is up to you. However, be advised that Experimental is even less stable than Next. We do not guarantee any stability between Experimental releases. How Can I Learn More About Experimental Features? Experimental features may or may not be documented. Usually, experiments aren’t documented until they are close to shipping in Next or Stable. If a feature is not documented, they may be accompanied by an RFC. We will post to the React blog when we’re ready to announce new experiments, but that doesn’t mean we will publicize every experiment. You can always refer to our public GitHub repository’s history for a comprehensive list of changes. Full Article
pr Coronavirus: 'Depression feels like my cat is sitting on my chest' By www.bbc.co.uk Published On :: Fri, 17 Apr 2020 02:58:57 GMT Two young people describe how the coronavirus pandemic and the lockdown have affected their mental health. Full Article
pr Coronavirus: Volunteers help protect NHS workers By www.bbc.co.uk Published On :: Thu, 02 Apr 2020 01:38:36 GMT The army of volunteers making essential supplies for NHS workers fighting Covid-19. Full Article
pr Ultra-Orthodox and trans: 'I prayed to God to make me a girl' By www.bbc.co.uk Published On :: Sat, 25 Apr 2020 23:28:57 GMT Growing up as a Hasidic Jew, Abby Stein had no idea trans people existed - she just felt sure she was a girl. Full Article
pr Brazil's Amazon: Surge in deforestation as military prepares to deploy By www.bbc.co.uk Published On :: Fri, 08 May 2020 21:17:52 GMT The military is preparing to deploy to the region to try to stop illegal logging and mining. Full Article
pr React Router & Webpack in Production By reactjsnews.com Published On :: Sun, 13 Mar 2016 04:00:09 +0000 I’ve been working on a pretty large react-router codebase at work. Currently it has around 50~ code splits, which as you can imagine, is a lot of routes. This is going to be a post on the things I’ve learned throughout building out my development / production config and how we are using webpack in production. ###Initial Setup Before I really dive into how my webpack config is setup and the problems I’ve found, I’ll quickly go over how this app is setup. Currently, there’s one entry point and it looks like this: import React from 'react' import { render } from 'react-dom' import { match, Router, browserHistory } from 'react-router' import AsyncProps from 'async-props' import routes from '../routes/index' /* globals document, window */ const { pathname, search, hash } = window.location const location = `${pathname}${search}${hash}` match({ routes, location }, () => { render( <Router render={props => <AsyncProps {...props}/>} routes={routes} history={browserHistory} />, document.getElementById('app') ) }) It looks like a standard react-router setup, except a couple things are different. For one, there’s way too many routes to have them all in this file, so we are importing the main route object into this file. Second, we are using match on the client side. Without matching first, the client side would try to render before the splits were downloaded causing an error. You can read a little more about match on the client here. Next, we are using Ryan Florence’s awesome async-props library for loading data into components. It allows me to load data from an api before the server renders components. It will pass the data down to the client for the client-side render, and then data will load as you navigate to new pages automatically. ###Routes Our main routes file looks like this: export default { component: 'div', path: '/', indexRoute: require('./index'), childRoutes: [ require('./login'), require('./account'), ... ] } There’s a lot more require’s in our app of course. And these are nested pretty deep. The files referenced in the root file have more child routes, and those use require.ensure which you can read about in the webpack docs on code splitting. It tells webpack to make a new bundle, and then load that bundle when require.ensure is called on the client. Here’s an example: if(typeof require.ensure !== "function") require.ensure = function(d, c) { c(require) } module.exports = { path: 'account', getComponent(location, cb) { require.ensure([], (require) => { cb(null, require('../../views/master/index.jsx')) }) }, childRoutes: [ require('./settings'), ] } There’s a few things going on here. First, we have a function at the top that will polyfill require.ensure. Why? Well, on this project we are server rendering our whole site as well, which I would rather not do, but due to the type of site we are building: we have to. The next thing is the relative require path. I’m using this awesome babel resolver plugin along with webpack’s resolve paths so that I can import files like this: import Header from '../../master/header' //becomes import Header from 'master/header' Why do I have to use a babel plugin AND webpack’s resolve feature? Once again, doing a server rendered app, the code is ran on the server and also through webpack. In this particular app, I haven’t had time to experiment with webpacking the server. Anyways, if I didn’t use the babel plugin, errors would be thrown on the server, but webpack would work fine. This is one of the common things I have ran into while building this app. Realizing some things need to be done slightly different on the server or client. You may still be wondering why I am referencing the component as a relative path in the above route example, and that’s because the babel plugin I’m using only works with import and not require. My route objects are the one place that I have these “nasty” looking paths. ##Webpack I was prompted to make this article after tweeting this out: webpack splits vs AggressiveMergingPlugin({minSizeReduce: 1.0}) pic.twitter.com/b6kxHEqNcO— ReactJS News (@ReactJSNews) March 10, 2016 A couple people wanted a better explanation as to what’s happening here. When I was first building my production webpack config, even after using all of these plugins: new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'), new webpack.optimize.OccurenceOrderPlugin(), new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false }, comments: false, sourceMap: false, mangle: true, minimize: true }), My bundle looked like this: That’s pretty huge if you think about it. And I’m not talking about the amount of bundles. I’m talking about the file size. After searching everywhere for a solution to get the bundle size down further, I found webpack’s AggressiveMergingPlugin. This thing is a life saver. As you may have seen from the tweet, the output turns into this: Just having the main, vendor, and one other bundle brings the whole site under 1MB. I’m using the plugin to only merge files if the size reduction is more than 50%, which is the default. People talk about code splitting in webpack and think it’s really amazing to load the JS for the page you’re on and nothing more. It sounds great. The problem is that the file size is immensely bigger. If someone more familiar with webpack has a better idea as to why this is, I’d like a better explanation. It isn’t feasable to keep the splits instead of merging them. This site is pretty large, with a lot of routes as you can tell from the screenshots. Codesplitting without merging would cause way more waiting on the client side every time you navigate to a new page. Even if the JS was heavily cached, the first time you hit these pages it will have to load a 300kb bundle for some of them. ##Caching That takes us to caching. We are about a month away from publicly launching this site, so we haven’t setup the workflow for pushing updates through a cdn, but that will be the end result. For now, in my webpack config, my output object looks like this: output: { path: __dirname + '/public/assets/js/[hash]/', filename: '[name].js', chunkFilename: '[id].js', publicPath: '/assets/js/[hash]/' }, This is in the production config of course. This way I can cache the files and when I update the code, the hash will change and the browser won’t be caching the old code. I pass in the hash as an env variable at runtime to that the server has the correct path to the assets folder. ##Problems There were a few big problems I came across while building out a server rendered app with dynamic routes. The first was page titles. How am I supposed to have the right title on the client and on the initial server render? Thankfully, Ryan has yet another solution. react-title-component solves this perfectly. The next was, how do I hit an api, wait for the response on server render, load new data on route changes, and of course, do this at the component level. As I mentioned before, async-props solves this problem too. It will give you route info so that you can make requests based on things in the url. The next problem is one that I haven’t fully solved. Webpack is getting really slow. It takes around 20 seconds on a maxed out macbook 15” to build code in production. On the server, it takes more like a minute! If I’m in development mode, it takes around 10 seconds to make the initial build, and sometimes it lags on building the splits on code change. If anyone has insight into this I would love to hear it. This one goes along with the webpack one, and it is reloading the server. I haven’t tried to webpack the server but I hear doing so works great for this. I don’t think it would fix the problem with webpack being slow though, and in fact it would probably make it even slower. ##Folder structure I almost forgot to throw this one in here! I’m really happy with the structure of this project. I have a views folder that has all of the same folders and file names as the routes folder. It makes it really easy to find things. These also correspond with the URL to the page. /account/settings will be in views/account/settings.jsx and routes/account/settings.js. The same is true for my tests folder. ##Conclusion I hope this gave you a good glimpse at how webpack and react router work at a larger scale than you see most blog posts cover. If you have any questions or things that you would like me to talk about that I haven’t already, please leave a comment below and I will update this post! I’m sure that I forgot a few problems and tips writing this. I was thinking this would be a short post but it blew up on me! Full Article
pr Using Proxies with Redux Types By reactjsnews.com Published On :: Tue, 28 Mar 2017 16:00:00 +0000 One of the most common problems that I run into when using Redux is trying to figure out why an action is not being captured by a reducer. For someone just getting starting with Redux, debugging this issue can be especially overwhelming because of how Redux manages data flow. So before you start pouring over configuration code, or the logic contained in your action creators and reducers, please, make sure your action types are defined and spelled correctly. One of the most common problems that I run into when using Redux is trying to figure out why an action is not being captured by a reducer. For someone just getting starting with Redux, debugging this issue can be especially overwhelming because of how Redux manages data flow. So before you start pouring over configuration code, or the logic contained in your action creators and reducers, please, make sure your action types are defined and spelled correctly. In any application that I have built, most bugs that I have run into are simply due to typos. However, the solution to this particular problem is harder to spot because no errors are raised when the application is run. Take a look at the snippet below. // actionTypes.js export const FETCH_FILE_REQUEST = 'fetch_file_request'; export const FETCH_FILE_SUCCESS = 'fetch_file_success'; export const FETCH_FILE_FAIL = 'fetch_file_fail'; // filesReducer.js import { FETCH_FILE_REQUEST, FETCH_FILE_SUCESS, FETCH_FILE_FAIL } from '../actions/actionTypes'; const filesReducer = (state = {}, action) => { switch (action.type) { case FETCH_FILE_SUCESS: return { ...state, file: action.payload }; default: return state; } } export default filesReducer; Assuming we dispatched an action with type FETCH_FILE_SUCCESS, the filesReducer should catch the action before the default case is returned. But what if that is not happening? Where do we start the debugging process. There does not appear to be anything wrong with the code in the reducer; the action type was imported and matches the case in the switch statement. There are no errors in the browser. Where is the issue? You may have noticed that I misspelled SUCCESS in filesReducer.js, but the reason this can be hard to catch is because importing undefined types does not cause an error, so when we import FETCH_FILE_SUCESS, its value is actually undefined, so our reducer always hits the default case. It would be nice if the existing import/export system could help us catch this. Unfortunately, since action types are just strings, validating their existence is challenging. Luckily, we have another option. Enter Proxies Proxies are a feature of ES2015 that allow us to customize operations on a object. They can be used in many different ways, and you can find some useful examples here and here. For our problem, this example from Mozilla looks promising: let validator = { set: function(obj, prop, value) { if (prop === 'age') { if (!Number.isInteger(value)) { throw new TypeError('The age is not an integer'); } if (value > 200) { throw new RangeError('The age seems invalid'); } } // The default behavior to store the value obj[prop] = value; // Indicate success return true; } }; let person = new Proxy({}, validator); person.age = 100; console.log(person.age); // 100 person.age = 'young'; // Throws an exception person.age = 300; // Throws an exception So if proxies can be used to validate that properties assigned to an object are of a certain type and value, we should definitely be able to ensure that our action types are never undefined, or else throw an error that will be easy for us to fix. Let’s refactor our actionTypes.js file. // actionTypes.js const types = { FETCH_FILE_REQUEST: 'fetch_file_request', FETCH_FILE_SUCCESS: 'fetch_file_success', FETCH_FILE_FAIL: 'fetch_file_fail' } const typeValidator = { get(obj, prop) { if (obj[prop]) { return prop; } else { throw new TypeError(`${prop} is not a valid action type`); } } } module.exports = new Proxy(types, typeValidator); First, we define a object containing all our action types. Then we define our validator handler typeValidator. The get method inside our handler is called a trap, and provides access to the properties of a object. If the property we are looking for, an action type, in this case, exists in the types object, return that prop, unmodified. Otherwise, throw an error because the prop does not exist. Finally, export a new proxy, passing the types object as the target and the typeValidator as the handler. However, it is important to note that the ES2015 module system does not work well with proxies, so module.exports and require() must be used for exporting and importing the types. Barely any code needs to change in the reducer and action creator files, but in order for the action types to be imported successfully, we just need couple lines of code in a new file: // actionTypesProxy.js export const { FETCH_FILE_REQUEST, FETCH_FILE_SUCCESS, FETCH_FILE_FAIL, } = require('./actionTypes'); // in the reducer and action creator files // change '../actions/actionTypes' to // '../actions/actionTypesProxy' By creating a proxy to verify the existence of an action type, we no longer have to worry about correctly naming a property upon import because an error will be thrown in the browser console as soon as the application starts. So, reduce the number headaches you get when developing an application using Redux and start using proxies. Interested in learning how to build applications using Redux with ReactJS. Check out this online course! Modern React with Redux Full Article
pr Javier Ceppi, Praful Patel, and Jaime Yarza speak to the media during a press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:03:00 GMT KOLKATA, INDIA - OCTOBER 26: L-R: Javier Ceppi, Tournament Director at LOC FIFA U-17 World Cup India 2017, Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr Javier Ceppi, Praful Patel and Jaime Yarza speak during a India 2017 press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:07:00 GMT KOLKATA, INDIA - OCTOBER 26: L-R: Javier Ceppi, Tournament Director at LOC FIFA U-17 World Cup India 2017, Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr Praful Patel and Jaime Yarza speak to the media during an India 2017 press conference By www.fifa.com Published On :: Thu, 26 Oct 2017 14:11:00 GMT KOLKATA, INDIA - OCTOBER 26: Patel Praful and Head of FIFA Tournaments, Jaime Yarza speak to the media during a press conference ahead of the FIFA U-17 World Cup India 2017 tournament at Vivekananda Yuba Bharati Krirangan on October 26, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr : A player from Mali prays before entering the field By www.fifa.com Published On :: Sat, 28 Oct 2017 11:56:00 GMT KOLKATA, INDIA - OCTOBER 28: A player from Mali prays before entering the field prior the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr The Mali team is pictured prior to the FIFA U-17 World Cup India 2017 3rd Place match By www.fifa.com Published On :: Sat, 28 Oct 2017 12:32:00 GMT KOLKATA, INDIA - OCTOBER 28: The Mali team is pictured prior to the FIFA U-17 World Cup India 2017 3rd Place match between Brazil and Mali at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final By www.fifa.com Published On :: Sat, 28 Oct 2017 13:39:00 GMT KOLKATA, INDIA - OCTOBER 28: A general view of England dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr A general view of the Spain dressing room prior to the FIFA U-17 World Cup final By www.fifa.com Published On :: Sat, 28 Oct 2017 14:00:00 GMT KOLKATA, INDIA - OCTOBER 28: (EDITOR'S NOTE: Image was created as an Equirectangular Panorama. Import image into a panoramic player to create an interactive 360 degree view) A general view of the Spain dressing room prior to the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr FIFA President Gianni Infantino presents the winners trophy By www.fifa.com Published On :: Sat, 28 Oct 2017 18:32:00 GMT KOLKATA, INDIA - OCTOBER 28: FIFA President Gianni Infantino presents the winners trophy to captain Angel Gomes of England after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr FIFA President Gianni Infantino delivers the winners trophy By www.fifa.com Published On :: Sat, 28 Oct 2017 18:33:00 GMT KOLKATA, INDIA - OCTOBER 28: FIFA President Gianni Infantino delivers the winners trophy to captain Angel Gomes of England after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr FIFA President Gianni Infantino delivers the champion trophy By www.fifa.com Published On :: Sat, 28 Oct 2017 18:41:00 GMT KOLKATA, INDIA - OCTOBER 28: FIFA President Gianni Infantino delivers the champion trophy to the captain Angel Gomes of England after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr FIFA President Gianni Infantino delivers the champion trophy By www.fifa.com Published On :: Sat, 28 Oct 2017 18:43:00 GMT KOLKATA, INDIA - OCTOBER 28: FIFA President Gianni Infantino delivers the champion trophy to the captain Angel Gomes of England after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Buda Mendes - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr FIFA President Gianni Infantino delivers the champion trophy to the captain Angel Gomes of England By www.fifa.com Published On :: Sat, 28 Oct 2017 21:18:00 GMT KOLKATA, INDIA - OCTOBER 28: FIFA President Gianni Infantino delivers the champion trophy to the captain Angel Gomes of England after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Jan Kruger - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr Rhian Brewster of England is congratulated by FIFA President, Gianni Infantino By www.fifa.com Published On :: Sun, 29 Oct 2017 07:15:00 GMT KOLKATA, INDIA - OCTOBER 28: Rhian Brewster of England is congratulated by FIFA President, Gianni Infantino after the FIFA U-17 World Cup India 2017 Final match between England and Spain at Vivekananda Yuba Bharati Krirangan on October 28, 2017 in Kolkata, India. (Photo by Tom Dulat - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr Joy Bhattacharjya, India 2017 Project Director By www.fifa.com Published On :: Sun, 29 Oct 2017 12:55:00 GMT Joy Bhattacharjya, India 2017 Project Director Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA U-17 World Cup India 2017
pr Javid caught between pride and frustration By www.fifa.com Published On :: Wed, 28 Sep 2016 07:16:00 GMT FIFA.com spoke to the disconsolate yet proud Mahdi Javid after Iran were defeated 4-3 by Russia in the semi-finals of the FIFA Futsal World Cup. Full Article
pr One final push for pride and glory By www.fifa.com Published On :: Thu, 29 Sep 2016 22:21:00 GMT However the FIFA Futsal World Cup Colombia 2016 concludes, the tournament will go down as a watershed. For the first time, the trophy will not be lifted by Brazil or Spain, with either Russia or Argentina set to claim the crown in Cali. Full Article
pr Septet set their sights on supremacy in Qatar By www.fifa.com Published On :: Sun, 08 Dec 2019 14:54:00 GMT Full Article
pr Mane, Alexander-Arnold prepare to take on the world By www.fifa.com Published On :: Tue, 10 Dec 2019 21:00:00 GMT Full Article
pr Al Sadd progress as Hienghene impress By www.fifa.com Published On :: Wed, 11 Dec 2019 08:37:00 GMT Full Article
pr Filipe Luis: We're giving the semi-final maximum priority By www.fifa.com Published On :: Mon, 16 Dec 2019 16:18:00 GMT Full Article
pr Players of Russia huddle prior to the FIFA Futsal World Cup Group B match between Thailand and Russia By www.fifa.com Published On :: Wed, 28 Sep 2016 17:28:00 GMT MEDELLIN, COLOMBIA - SEPTEMBER 10: Players of Russia huddle prior to the FIFA Futsal World Cup Group B match between Thailand and Russia at Coliseo Ivan de Bedout stadium on September 10, 2016 in Medellin, Colombia. (Photo by Alex Caparros - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr The stadium is seen prior to the semi-final between Argentina and Portugal By www.fifa.com Published On :: Wed, 28 Sep 2016 23:49:00 GMT CALI, COLOMBIA - SEPTEMBER 28: The Stadium is seen prior to the FIFA Futsal World Cup Semi Final match between Argentina and Portugal at the Coliseo el Pueblo Stadium on September 28, 2016 in Cali, Colombia. (Photo by Ian MacNicol - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr The Stadium is seen prior to the FIFA Futsal World Cup Semi Final match between Argentina and Portugal By www.fifa.com Published On :: Thu, 29 Sep 2016 00:30:00 GMT CALI, COLOMBIA - SEPTEMBER 28: The Stadium is seen prior to the FIFA Futsal World Cup Semi Final match between Argentina and Portugal at the Coliseo el Pueblo Stadium on September 28, 2016 in Cali, Colombia. (Photo by Ian MacNicol - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Cristian Borruto (L) of Argentina protects the ball from Joao Matos (R) By www.fifa.com Published On :: Thu, 29 Sep 2016 03:15:00 GMT Cristian Borruto (L) of Argentina protects the ball from Joao Matos (R) during the FIFA Futsal World Cup Semi-Final match between Argentina and Portugal at the Coliseo El Pueblo stadium on September 28, 2016 in Cali, Colombia. (Photo by Alex Caparros - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Argentina are seen prior to the FIFA Futsal World Cup Semi Final By www.fifa.com Published On :: Fri, 30 Sep 2016 20:31:00 GMT CALI, COLOMBIA - SEPTEMBER 28: Argentina are seen prior to the FIFA Futsal World Cup Semi Final match between Argentina and Portugal at the Coliseo el Pueblo Stadium on September 28, 2016 in Cali, Colombia. (Photo by Ian MacNicol - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr FIFA President Gianni Infantino (C) looks on as the National Anthems are played By www.fifa.com Published On :: Sat, 01 Oct 2016 18:49:00 GMT CALI, COLOMBIA - OCTOBER 01: FIFA President Gianni Infantino (C) looks on as the National Anthems are played before the FIFA Futsal World Cup Third Place Play off match between Iran and Portugal at the Coliseo El Pueblo stadium on October 1, 2016 in Cali, Colombia. (Photo by Alex Caparros - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr FIFA President Gianni Infantino (C) looks on as the National Anthems are played By www.fifa.com Published On :: Sat, 01 Oct 2016 18:49:00 GMT CALI, COLOMBIA - OCTOBER 01: FIFA President Gianni Infantino (C) looks on as the National Anthems are played before the FIFA Futsal World Cup Third Place Play off match between Iran and Portugal at the Coliseo El Pueblo stadium on October 1, 2016 in Cali, Colombia. (Photo by Alex Caparros - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Brazilian futsal player Falcao receives an award from FIFA President Gianni Infantino By www.fifa.com Published On :: Sat, 01 Oct 2016 21:08:00 GMT Brazilian futsal player Falcao receives an award from FIFA President Gianni Infantino during the Colombia 2016 FIFA Futsal World Cup at the Coliseo El Pueblo stadium, in Cali, Colombia on October 1, 2016. Falcao played five World Cups, won two world titles, two golden balls and one golden boot among others. (Photo by Gabriel Aponte/LatinContent/Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Brazilian futsal player Falcao receives an award from FIFA President Gianni Infantino By www.fifa.com Published On :: Sat, 01 Oct 2016 21:11:00 GMT Brazilian futsal player Falcao receives an award from FIFA President Gianni Infantino during the Colombia 2016 FIFA Futsal World Cup at the Coliseo El Pueblo stadium, in Cali, Colombia on October 1, 2016. Falcao played five World Cups, won two world titles, two golden balls and one golden boot among others. (Photo by Gabriel Aponte/LatinContent/Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Ahmad Esmaeilpour of Iran is presented with his Bronze Ball Award By www.fifa.com Published On :: Sun, 02 Oct 2016 03:52:00 GMT Ahmad Esmaeilpour of Iran is presented with his Bronze Ball Award during the FIFA Futsal World Cup Final match between Russia and Argentina at the Coliseo el Pueblo Stadiumon October 1, 2016 in Cali, Colombia. (Photo by Ian MacNicol - FIFA/FIFA via Getty Images) Full Article Area=Tournament Section=Competition Kind=Photo Tournament=FIFA Futsal World Cup Colombia 2016
pr Japan and Switzerland advance, Uruguay spring surprise By www.fifa.com Published On :: Sun, 24 Nov 2019 03:57:00 GMT Full Article
pr Paraguay's pride and pain after early exit By www.fifa.com Published On :: Wed, 27 Nov 2019 01:08:00 GMT Full Article
pr Senegal spring into quarter-finals with win over UAE By www.fifa.com Published On :: Tue, 26 Nov 2019 16:43:00 GMT Full Article
pr Golden Ball shortlist and digital success highlighted at closing press conference By www.fifa.com Published On :: Sat, 30 Nov 2019 18:52:00 GMT Full Article
pr FIFA Beach Soccer World Cup 2019: Clash of styles with keepers prominent By www.fifa.com Published On :: Thu, 19 Mar 2020 09:59:00 GMT FIFA Beach Soccer World Cup 2019: clash of styles with keepers playing prominent role Full Article
pr Korea DPR 0-1 Niger (India 2017) By www.fifa.com Published On :: Sat, 07 Oct 2017 19:19:00 GMT Watch highlights of the Group D match between Korea DPR and Niger at the FIFA U-17 World Cup. Full Article Area=Tournament Section=Competition Kind=Match HL Tournament=FIFA U-17 World Cup India 2017
pr Korea DPR 0-2 Brazil (India 2017) By www.fifa.com Published On :: Tue, 10 Oct 2017 18:21:00 GMT Watch highlights of the Group D match between Korea DPR and Brazil at the FIFA U-17 World Cup. Full Article Area=Tournament Section=Competition Kind=Match HL Tournament=FIFA U-17 World Cup India 2017
pr Spain 2-0 Korea DPR (India 2017) By www.fifa.com Published On :: Fri, 13 Oct 2017 18:30:00 GMT Watch highlights of the Group D match between Spain and Korea DPR at the FIFA U-17 World Cup. Full Article Area=Tournament Section=Competition Kind=Match HL Tournament=FIFA U-17 World Cup India 2017
pr Football greats make EURO 2016 predictions By www.fifa.com Published On :: Fri, 10 Jun 2016 17:01:00 GMT Marcel Desailly, Luis Figo and Fabio Capello discuss which teams they think are favoured to win UEFA EURO 2016. Full Article Area=Tournament Section=Competition Kind=Video Tournament=FIFA Confederations Cup Russia 2017
pr Relive: FIFA Confederations Cup Russia 2017 Official Draw Coaches Press Conference By www.fifa.com Published On :: Sat, 26 Nov 2016 19:20:00 GMT Relive: FIFA Confederations Cup Russia 2017 Official Draw Coaches Press Conference Full Article Area=Tournament Section=Competition Kind=Static Video Tournament=FIFA Confederations Cup Russia 2017
pr Ronaldo gets a trophy surprise By www.fifa.com Published On :: Thu, 09 Mar 2017 06:06:00 GMT You can look, but don’t touch! Watch Cristiano Ronaldo’s reaction when we surprised him with a one-on-one meeting with the FIFA Confederations Cup trophy. Portugal’s captain will try to win the right to touch the trophy when his nation compete in the tournament of champions in Russia. Full Article Area=Tournament Section=Competition Kind=Video Tournament=FIFA Confederations Cup Russia 2017
pr POR v. MEX - Portugal Pre-Match Press Conference By www.fifa.com Published On :: Mon, 12 Jun 2017 10:54:00 GMT POR v. MEX - Portugal Pre-Match Press Conference Full Article Area=Tournament Section=Competition Kind=Video Tournament=FIFA Confederations Cup Russia 2017
pr POR v. MEX - Mexico Pre-Match Press Conference By www.fifa.com Published On :: Mon, 12 Jun 2017 10:55:00 GMT POR v. MEX - Mexico Pre-Match Press Conference Full Article Area=Tournament Section=Competition Kind=Video Tournament=FIFA Confederations Cup Russia 2017