Following the launch of the Follow 4D version rule, we’re excited to introduce a new level of automation and reliability in 4D 20 R10: fully recursive dependency resolution.
Whether you’re adding, updating, or removing a component, the Dependency Manager now acts recursively, ensuring every action you take is reflected accurately throughout your entire dependency tree.
One Action, All Dependencies
When you add a primary dependency, from GitHub or a local folder, 4D:
- Recursively loads all the dependencies it requires
- Applies the version constraints defined in your dependencies.json.
No need to worry about missing pieces or version conflicts, your entire dependency tree is resolved and loaded automatically.
Recursive Version Handling
When multiple components require different versions of the same dependency:
- The Dependency Manager checks the required ranges and chooses a version that satisfies all constraints, if possible.
- If a version is declared directly as a primary dependency, it takes precedence over any indirectly required versions.
This approach keeps your environment stable and consistent, even as your project grows.
A UI That Reflects the Full Structure
The Project Dependencies interface has been updated to surface the recursive nature of your project’s dependencies:
- “All” tab: Shows a flat list of all dependencies (both primary and secondary) used in your project.
- “Declared” tab: A new view between “All” and “Active” that lists only the dependencies you’ve explicitly declared in dependencies.json.
- Secondary dependencies are clearly marked, and when you hover over one, a tooltip reveals which component(s) require it. Everything is transparent.
Take One Action — 4D Handles the Rest
Every change you make, whether adding, removing, or updating a component, is now propagated recursively through your entire dependency graph.
You benefit from:
- Automatic loading of required sub-dependencies
- Smart version resolution with clear precedence rules
- Safe removal with impact awareness
- A UI that reflects the actual structure of your project
FOR COMPONENT DEVELOPERS
If you’re developing your own components, you might be wondering: how do I declare my dependencies? Each component must include its own dependencies.json file. This file specifies the dependencies required for the component to function properly, along with their version constraints.
This mechanism works both with local dependencies and those hosted on GitHub. However, for better portability and sharing, using GitHub is considered best practice. When building a component, make sure the dependencies.json file is included in the final package. Full support for this feature is available starting with 4D 20 R10. If you’re working with older components, you’ll need to rebuild them to take advantage of automatic recursive resolution.
Try it now to experience a smarter, time-saving way to manage dependencies, and spend less time troubleshooting.

