I think mostly its good to refactor. You can upgrade parts. And while a part may be 90% new, its a smaller releasable upgrade.
When creating a new project, any time I can pull existing code from something I've done I do it. Sometimes I pull it over, and rewrite it some to improve it. But it saves a lot of time to reuse as much as I can. I haven't written a file/class/whatever to connect to a database, runs queries, etc in a long time. I've slowly upgraded my standard classes over time, but mostly I just drop em in and use em.
At work, we have an old tool that is internal only but we can't let it go down. We've been rebuilding significant portions of it, sometimes not reusing any of that sections code again, but we would never do the whole tool at one. JMTC