In order to make the exemple as simple as possible, I'm using the component internal state to control if the asynchronous call has already returned or not. Like that: class CardComponent extends Component { componentDidMount() { const self = this; server.getSomeData(data => self .setState({ data: data })); } //This render is begin called even before props getting updated render() { return ( <div> <h1>{ 'This will always render' }</h1> { this.state && this.state.data && <div>{ 'This will just render after the return of the async call' }</div> } </div> ) } } The trick here is to use the component internal setState. Every time you call setState, React will force the component to render again. So, suppose you have an asynchronous function getSomeData that will call a callback function when data is fetched from server. When this function is called, I set the state of the component with the data and the render function is called again. Inside render, I use an AND operation to check if the data property is available in state. Since state is not initialized by default, I have to test if state and state.data are available. Because in JavaScript, the result of an AND operation is always the last expression (from left to right), it will return the <div> to be rendered. This is a very simple technic, but it works pretty well... When you get deeper into React, you'll find a lot of best practice guides recommending to avoid the use of internal component state (for example, stripping out the async call from inside the component and passing the data as a component property), which offers some advantages in terms of maintainability. But that is another history...