This PR contains the following updates: | Package | Change | Age | Confidence | |---|---|---|---| | [zod](https://zod.dev) ([source](https://github.com/colinhacks/zod)) | [`^3.24.3` -> `^4.0.0`](https://renovatebot.com/diffs/npm/zod/3.25.76/4.0.5) | [](https://docs.renovatebot.com/merge-confidence/) | [](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes <details> <summary>colinhacks/zod (zod)</summary> ### [`v4.0.5`](https://github.com/colinhacks/zod/releases/tag/v4.0.5) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.4...v4.0.5) #### Commits: - [`f91a73e`](f91a73ec23
) Support pipes in discriminated unions. Closes [#​4856](https://github.com/colinhacks/zod/issues/4856) ([#​4861](https://github.com/colinhacks/zod/issues/4861)) - [`45afab0`](45afab0f84
) 4.0.5 ### [`v4.0.4`](https://github.com/colinhacks/zod/releases/tag/v4.0.4) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.3...v4.0.4) #### Commits: - [`9335f05`](9335f0543d
) Adds `ZodFirstPartyTypeKind` stub to fix module resolution failure inside `zod-to-json-schema` ### [`v4.0.3`](https://github.com/colinhacks/zod/releases/tag/v4.0.3) [Compare Source](44a936cb77
...v4.0.3) #### Commits: - [`5905a8d`](5905a8d810
) Improve check-versions script - [`f3e749b`](f3e749b1b0
) Remove global File interface - [`44a936c`](44a936cb77
) 4.0.2 - [`74006ed`](74006edd49
) Fix JSR provenance - [`ff4af5e`](ff4af5e889
) 4.0.3 - [`ce573e8`](ce573e8799
) Update test badge - [`9a7161a`](9a7161a976
) Fix versions ### [`v4.0.2`](https://github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) [Compare Source](https://github.com/colinhacks/zod/compare/v4.0.1...44a936cb77961e57a0988d8a3c63d9c71fce69ac) ### [`v4.0.1`](https://github.com/colinhacks/zod/releases/tag/v4.0.1): v4.0.0 [Compare Source](79d4d80e3b
...v4.0.1) With this release, `zod@4.0.0` has been published to `npm`. There were no code changes between 3.25.76 and 4.0.0! Zod 4 has been stable for the past 6 weeks, but it was published inside zod@3.25.x on npm. this transitionary window gave the ecosystem time to incrementally support for Zod 4 (without dropping support for Zod 3). As there is now near-universal support for Zod 4 in the ecosystem, ths time feels right to finally put a bow on things 🎀 To upgrade to Zod 4: ``` npm upgrade zod@^4.0.0 ``` If you’ve already migrated to Zod 4 using the subpaths, there are no changes required. however you can optionally simplify your imports (recommended) ```ts // after upgrading to zod@4.0.0: import * as z from "zod"; // Zod 4 (regular) import * as z from "zod/mini" // Zod 4 Mini // these still work, but are no longer needed import * as z from "zod/v4"; import * as z from "zod/v4-mini": // if you still need Zod 3 import * as z from "zod/v3"; // Zod 3 ``` **Library authors** — if you've already implemented Zod 4 support according to the best practices outlined in the [Library authors](/library-authors) guide, bump your peer dependency to include `zod@^4.0.0`: ```json // package.json { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } } ``` *There should be no other code changes necessary.* No code changes were made between the latest `3.25.x` release and `4.0.0`. This does not require a major version bump. ### [`v4.0.0`](https://github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441) [Compare Source](https://github.com/colinhacks/zod/compare/v3.25.76...79d4d80e3b47f04752c5c281077b53f889551441) </details> --- ### Configuration 📅 **Schedule**: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC40Ni4wIiwidXBkYXRlZEluVmVyIjoiNDEuMzEuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Co-authored-by: Felix Schulze <admin@schulze.network> Reviewed-on: #6 Co-authored-by: Renovate Bot <renovatebot@schulze.network> Co-committed-by: Renovate Bot <renovatebot@schulze.network>
InvestingFIRE 🔥 — The #1 Interactive FIRE Calculator
InvestingFIRE is a responsive web application for calculating your path to Financial Independence and Early Retirement (FIRE). It features a year-by-year projection engine that simulates both accumulation (savings and investment growth) and retirement (withdrawals) phases, allowing users to:
- Input starting capital, monthly savings, expected annual growth rate, inflation rate, current age, desired retirement age, life expectancy, and desired monthly retirement allowance.
- View a dynamic chart displaying projected portfolio balance and monthly allowance over time.
- Instantly see their estimated “FIRE number” (required capital at retirement), how long their capital will last, and compare results to the “4% rule.”
- Adjust assumptions live, with all calculations and visualizations updating automatically.
- Access explanatory content about FIRE methodology, key variables, and additional community resources, all on a single, consolidated page.
The project’s code is structured using React/Next.js with TypeScript, focusing on user experience, modern UI components, and clarity of financial assumptions.
🚀 Features at a Glance
- ⚡️ Real-Time Projections: Every field updates the chart as you type. Experiment with savings, growth rates, inflation, or retirement age and see your future instantly.
- 📈 Interactive Chart: Dual-area plots for portfolio value and future monthly spending, plus reference lines for FIRE milestones and “4% rule” legends.
- 🧠 Education Baked In: Contextual tooltips, deep-dive sections on how FIRE works, FAQs, and must-read resources included.
- 🔎 Detailed Methodology: Not just a 25x rule — runs a full, year-by-year simulation with inflation-adjusted withdrawals and optional 4%-rule overlays.
- 👌 Modern UX: Typing, sliding, or clicking feels good. Responsive on all devices.
🧰 How It Works
The calculator models your FIRE journey in two phases:
-
Accumulation:
- Your starting capital is grown by your expected CAGR (~7% by default).
- Monthly savings are added for each year until retirement.
- Every variable can be adjusted live (capital, savings, age, growth, inflation, spending, target retirement).
-
Retirement:
- Your balance continues to grow by CAGR.
- Each year, an inflation-adjusted monthly allowance is withdrawn.
- The simulation runs until your selected life expectancy, showing the possibility of portfolio depletion.
Key Outputs:
- 🔥 “FIRE Number”: Portfolio value at your defined retirement age
- 📊 Interactive projection chart: See how your nest egg and withdrawals evolve over time
- 4️⃣ “4% Rule” overlays: Compare dynamic results to classic rule-of-thumb
🌟 Try It For Yourself
To run locally:
- Clone the repo
git clone https://git.schulze.network/schulze/fire.git cd fire
- Install dependencies
npm install
- Run the app
npm run dev
- Visit http://localhost:3000 and unleash the fire.
Deployed version: https://investingfire.com
✏️ Inputs & Variables
- Starting Capital — How much you’ve already invested
- Monthly Savings — What you’ll add each month
- Current Age & Retirement Age — Your FI timeline
- Life Expectancy — How long do you want income to last?
- Expected Growth Rate (CAGR) — Portfolio annual % return, before inflation
- Inflation Rate — Cost of living increases
- Desired Monthly Allowance — Your lifestyle, today’s dollars
As you adjust these, all projections update instantly without needing to hit “Calculate.”
Try many “what ifs” fast.
👩💻 Contributing
Pull requests are welcome! Open issues for bugs, new features, or debate about safe withdrawal rates and tax assumptions.
📄 License
🥇 Why Use InvestingFIRE?
- You want the truth — not just a 4% fantasy.
- You want to learn, not just punch in numbers.
- You want clarity, speed, and modern UI.
- You want to show your friends the best FIRE tool on the web.
Enjoy the rocket ride to financial independence.
InvestingFIRE — Know your number. Change your future.