A default export has no name at the boundary, so the importing file invents one. Rename the thing being exported and every import keeps working under the old name, which is comfortable right up until two files disagree about what it is called.
// money.js
export default function formatMoney(cents) { /* ... */ }
// three files, three names, no error anywhere
import formatMoney from './money';
import format from './money';
import fmt from './money';
// named: the identifier is part of the contract
export function formatMoney(cents) { /* ... */ }
import { formatMoney } from './money';
Named exports also make a typo a build error rather than an undefined, and they let an editor rename across the project. The usual argument for defaults — one export per file — is better expressed as a lint rule. Where a default is genuinely right, giving the exported function a name anyway at least puts it in stack traces.