A method of rendering a user interface, the method comprising: receiving, from a UI client engine associated with an application, a UI component tree for the application, the UI component tree comprising: UI component nodes each having associated predefined rendering information, and a custom rendering element node having associated incomplete rendering information; generating UI rendering instructions in accordance with the UI component tree by: for each UI component node, using the predefined rendering information to generate UI component rendering instructions, the UI component rendering instructions comprising instructions for rendering a corresponding UI component, for the custom rendering element node: retrieving custom rendering instructions generated by the application, the custom rendering instructions comprises a first part of instructions for rendering a corresponding custom rendering element and generating incomplete rendering instructions based on the incomplete rendering information, the incomplete rendering instructions comprising a second part of instructions for rendering said corresponding custom rendering element; and combining the UI component rendering instructions, the incomplete rendering instructions and the retrieved custom rendering instructions; and rendering the UI in accordance with the generated UI rendering instructions. receiving, from a UI client engine associated with an application, a UI component tree for the application, the UI component tree comprising: UI component nodes each having associated predefined rendering information, and a custom rendering element node having associated incomplete rendering information; UI component nodes each having associated predefined rendering information, and a custom rendering element node having associated incomplete rendering information; generating UI rendering instructions in accordance with the UI component tree by: for each UI component node, using the predefined rendering information to generate UI component rendering instructions, the UI component rendering instructions comprising instructions for rendering a corresponding UI component, for the custom rendering element node: retrieving custom rendering instructions generated by the application, the custom rendering instructions comprises a first part of instructions for rendering a corresponding custom rendering element and generating incomplete rendering instructions based on the incomplete rendering information, the incomplete rendering instructions comprising a second part of instructions for rendering said corresponding custom rendering element; and combining the UI component rendering instructions, the incomplete rendering instructions and the retrieved custom rendering instructions; and for each UI component node, using the predefined rendering information to generate UI component rendering instructions, the UI component rendering instructions comprising instructions for rendering a corresponding UI component, for the custom rendering element node: retrieving custom rendering instructions generated by the application, the custom rendering instructions comprises a first part of instructions for rendering a corresponding custom rendering element and generating incomplete rendering instructions based on the incomplete rendering information, the incomplete rendering instructions comprising a second part of instructions for rendering said corresponding custom rendering element; and retrieving custom rendering instructions generated by the application, the custom rendering instructions comprises a first part of instructions for rendering a corresponding custom rendering element and generating incomplete rendering instructions based on the incomplete rendering information, the incomplete rendering instructions comprising a second part of instructions for rendering said corresponding custom rendering element; and combining the UI component rendering instructions, the incomplete rendering instructions and the retrieved custom rendering instructions; and rendering the UI in accordance with the generated UI rendering instructions.