<!--
  Note: if the issue is about documentation or the website, please file it at:
  https://github.com/reactjs/reactjs.org/issues/new
-->

**Do you want to request a *feature* or report a *bug*?**

Bug

**What is the current behavior?**

when typing in a controlled input, the cursor always jumps to the end. This was an old issue that seems to have resurfaced.

[this code pen](https://codepen.io/gaearon/pen/VmmPgp?editors=0010) used in the docs [here](https://reactjs.org/docs/forms.html#controlled-components)  has the problem in all browsers as far as I have been able to test.

**What is the expected behavior?**

because we are using the state to update the component as soon as it's changed, the input element should be able to keep the cursor in the same place.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

I'm at latest (16.8.2) and I tested on Chrome, FireFox, and Edge on Windows

as far as I know, this was working at some point, though I don't know how long ago. possibly even before "Fiber"


/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 * @jest-environment node
 */
'use strict';
describe('Scheduling UMD bundle', () => {
  beforeEach(() => {
    
    global.__UMD__ = true;
    jest.resetModules();
  });
  function filterPrivateKeys(name) {
    
    return !name.startsWith('_') && !name.endsWith('Priority');
  }
  function validateForwardedAPIs(api, forwardedAPIs) {
    const apiKeys = Object.keys(api)
      .filter(filterPrivateKeys)
      .sort();
    forwardedAPIs.forEach(forwardedAPI => {
      expect(
        Object.keys(forwardedAPI)
          .filter(filterPrivateKeys)
          .sort(),
      ).toEqual(apiKeys);