DEV Community

Michael Gerzabek
Michael Gerzabek

Posted on • Originally published at pragmatiqu.io

Navigation as a Projection of Context

Navigation isn’t built — it’s projected. This essay explores how modern systems reveal their own structure through navigation, turning context, identity, and capability into a coherent architectural language.

Most discussions about navigation start in the wrong place.

They start with menus, information architecture, icons, labels, or layout.
They assume navigation is a UX problem. Something to be designed, configured, or polished.

In complex SaaS systems, this assumption quietly breaks systems long before it breaks interfaces.

What teams experience as “navigation complexity” usually shows up later as symptoms.

  • Menus that keep growing without structure.
  • Special cases for authentication, roles, tenants, or impersonation.
  • Duplicated logic between frontend and backend.
  • UI layers that guess what the system might allow.

By the time these problems become visible in the UI, the real cause already lies deeper.

Navigation is failing because the system no longer has a clear, explicit notion of context.

This essay argues a simple but opinionated thesis.

In complex systems, navigation is not a menu, but rather a projection of system context.

Seen this way, navigation stops being a configurable artifact and becomes something else entirely.
A read-only snapshot of what the system currently is, who the user is acting as, and what actions are meaningful right now.

This shift has far-reaching consequences.

It reframes navigation as a system boundary, rather than a UI concern. A product of context, in juxtaposition to configuration. A derived projection, instead of a manually curated structure.

It also forces uncomfortable but necessary questions.

Where does navigation actually come from in our system?
Who owns it? Frontend, backend, or “somewhere in between”?
What happens when identity, authorization, or tenancy changes?
Does the UI reflect system truth or invent one?

To answer these questions, the essay introduces a different way of thinking about navigation, built on five core ideas.

  1. Navigation is a system design problem, not a UI problem.
  2. Menus do not scale, contexts do.
  3. Navigation should be derived, not configured.
  4. Navigation decouples UI from implementation.
  5. Scalable navigation emerges from clear contracts, not heuristics.

None of these ideas depend on a specific framework or technology stack.
They apply equally to React or Vue frontends, microfrontend architectures, admin systems, and multi-tenant SaaS platforms.

Only later, once the architectural model is clear, will we look at how such a model can be implemented concretely and what kind of tooling it enables.

But first, we need to unlearn one deeply rooted assumption.

Navigation is not something you design and then wire to the system.
Navigation is something the system reveals about itself.

The Hidden Cost of Menus in Growing SaaS Systems

Navigation rarely breaks all at once.

It erodes slowly, feature by feature, role by role, exception by exception, until one day the system feels heavy, fragile, and hard to reason about.

Most SaaS products begin with a small list of sections, grouped by domain, carefully named.
Something that feels obvious.
At that stage, navigation feels solved.

Then the system grows.

New features appear.
Permissions become more granular.
Customers demand multi-tenancy.
Admins need impersonation.
Support teams require “just one more shortcut.”

Suddenly, every addition comes with a familiar suggestion:
“Let’s just add another menu item.”

This is where the hidden cost begins.

Menus Encode Assumptions

A menu is never neutral.

Every entry silently encodes assumptions about who the user is,
what they are allowed to do,
which context they are operating in and
which part of the system matters right now.

As long as these assumptions remain stable, menus appear to work.
But SaaS systems are defined by the opposite. Context is permanently changing.

The moment identity, role, tenant, or mode of operation becomes dynamic, menus stop reflecting reality.
They freeze assumptions that the system itself no longer guarantees.

This is why teams start compensating

  • conditionals in the frontend
  • feature flags inside navigation code
  • duplicated permission logic
  • and “temporary” exceptions that never disappear

What looks like UI complexity is actually architectural drift.

When Frontends Start Guessing

In many systems, navigation lives closest to the UI.
The backend exposes endpoints.
The frontend decides what to show.

This separation feels clean until the UI needs to answer questions the system never explicitly answered.

  • Is this action available now?
  • Is the user acting as themselves or on behalf of someone else?
  • Does this tenant even support this feature?
  • Is this entry relevant in the current mode?

When the backend remains silent, the frontend guesses.

Those guesses accumulate.
They become heuristics.
They become conventions.
Eventually, they become bugs.

At that point, navigation no longer reflects the system.
It reflects a theory of the system. One that slowly diverges from reality.

Feature Growth vs. System Clarity

Teams often respond to navigation complexity with restructuring.
They group items differently, add submenus, rename labels.

This treats navigation as an information architecture problem.

But the real tension is elsewhere.

Feature growth increases system complexity.
Menus attempt to compress that complexity into structure.

Compression works only as long as the system itself remains simple.

Once context matters, structure alone cannot carry meaning.
The interface starts compensating.

The result is familiar

  • deeply nested menus
  • duplicated entries for different roles
  • special cases for admins, support, or partners
  • “You don’t have access” screens reached after navigation

None of this feels broken in isolation.
Together, it signals that navigation is doing work it was never designed to do.

The Cognitive Cost of Menu-Based Navigation

The true cost of menu-based navigation erodes quietly through human experience.
Each action demanding more focus, each decision carrying unseen friction.

Onboarding slows because newcomers must decode intent instead of discovering flow, turning engagement into effort.

Fragile permissions and tangled dependencies breed hesitation.
Refactoring becomes risky.

At that stage, the issue is cultural, not technical.
Fear replaces curiosity, and maintenance gives way to stagnation.
Architectural debt drains not just performance, but people.

The cognitive cost of menu-based navigation shows up as loss of trust.

When users can no longer tell where they are, who they are acting as, and why something is available or not, the system stops feeling coherent.

At that point, no amount of UI polish can fix the problem.

Because the issue was never the menu.

It was the absence of a clear, explicit system context and the expectation that navigation would somehow compensate for it.

Navigation Is a System Boundary

Navigation sits at a deceptively simple place in a system.

It is the point where system capability meets human intention.
Where abstract structure becomes actionable choice.

That position makes navigation neither a superficial UI flourish nor a backend afterthought.
It is a boundary layer, mediating between what a system can do and what a user chooses to do with it.

And boundaries are never just design details.
They define architecture itself.

Navigation Lives Between System and User

From a system perspective, navigation answers a fundamental question:

Given who this user is, and the context they are in, what actions are meaningful right now?

This question cannot be answered by the UI alone.
It requires knowledge of identity and role, authorization and scope, tenant and environment, current mode of operation, and available capabilities.

All of this lives in the system.

Yet in many architectures, navigation is implemented after these concerns, not alongside them.

The backend exposes APIs.

The frontend renders screens.

Navigation is left in the middle, expected to “figure it out.”

This creates a silent but dangerous inversion.
The UI becomes responsible for interpreting system state that was never made explicit.

When the System Is Silent, the UI Invents

Every navigation decision requires information.

If the system does not provide it explicitly, the UI will infer it implicitly.

That inference might take the form of

  • checking permissions client-side
  • hiding or showing entries based on role strings
  • encoding feature availability in routes
  • relying on naming conventions or URL structure

None of these are inherently wrong.

They become problematic when they substitute contracts with assumptions.

At that point, navigation is no longer a boundary.
It becomes a guessing game.

Either the system projects its state or the UI invents one.

The more complex the system becomes, the more expensive this invention gets.

Frontend logic grows.

Backend changes ripple unexpectedly.

Two truths emerge.

One in the system.

One in the interface.

When navigation has to invent reality, the cure isn’t a smarter UI, it’s a more honest system.

“Dumb Frontends” vs. Honest Systems

The call for “dumb frontends” is often misunderstood.

The goal is not to reduce UX quality or interaction richness.
The goal is to move system intelligence back to where it belongs.

A frontend becomes fragile not because it is too simple,
but because it is forced to make decisions without authoritative information.

Navigation exposes this fragility earlier than most other features.
It is the first place where missing boundaries become visible.

This is why navigation problems are such reliable indicators of architectural strain.

They reveal where responsibility is blurred.

Boundaries Should Clarify

Well-designed boundaries have two properties.
They make responsibility explicit and reduce the need for interpretation.

Applied to navigation, this means:

  • the system defines what exists
  • the system defines what is allowed
  • the system defines what is meaningful in context
  • the UI renders that projection – nothing more, nothing less

Navigation, in this model, is not a place for logic.
It is a place for truth.

Once navigation is treated as a boundary instead of a UI artifact, a shift becomes possible.
We can stop designing menus and start projecting system state.

The next step is to ask a harder question.

If navigation should not be configured or curated manually,
where should it come from instead?

In most systems, the answer is configuration.

Somewhere there is a JSON file describing menu items, or a database table holding navigation entries, or a UI-specific registry maintained by hand, or a mix of feature flags, role checks, and conditional rendering.

These approaches feel practical because they are explicit.
They give teams something concrete to edit.

But they also introduce a quiet contradiction.
Navigation is treated as authoritative input, even though it is derived from other system concerns.

Configuration Freezes Decisions

Configuration is static by nature.

It encodes decisions made at a specific moment in time encoding which features exist in a specific environment, which roles can access them, which contexts matter, or how everything is grouped together.

As systems evolve, these decisions drift.

Flags appear to handle exceptions.

Conditions multiply to reconcile conflicts.

Notes and documentation are added to explain why things exist, though rarely with the same conviction that created them.

Each new adjustment tightens the knot.

Navigation becomes a second system. One that must be kept in sync manually.

At that point, the question is no longer how to organize the menu, but:

Which version of the system is the menu describing?

Context Is Already There

The alternative is not to invent more metadata.
It is to recognize that the system already knows everything navigation needs.

At any given moment, the system knows:

  • who the current actor is
  • which identity they are operating under
  • which tenant or scope is active
  • which capabilities are available
  • which actions are meaningful in this state

This information exists whether or not navigation uses it.

The mistake is treating navigation as a place where meaning is defined,
instead of a place where meaning is projected.

Navigation as a Read-Only Projection

In a context-driven model, navigation is not curated.

It is read-only, derived, and fully explainable.

The navigation the user sees is simply a snapshot of the system as it currently stands.
It reflects the active context the user inhabits and the capabilities the system exposes.
Within that frame, it defines which actions are possible and, by omission, which are not.

Nothing is hidden behind heuristics.

Nothing is guessed.

Nothing is “mostly right.”

Navigation becomes a projection of system truth, not an interpretation of it.

This has an important consequence.

There is no such thing as a “menu API.”

The system does not serve navigation.

It reveals itself, and navigation renders that revelation.

Designing for Change

Configuration assumes stability.

Context assumes change.

Modern SaaS systems are not static constellations of features; they are living configurations of context.

Identity shifts with each session, permissions appear and expire as work moves across boundaries, and features unfold gradually rather than arriving all at once.
Behavior adapts to the tenant that inhabits the system, so no two instances remain quite alike.
Even operation itself is fluid, sliding between support, administration, read‑only, or audit modes depending on current intention and trust.

Navigation that depends on configuration must anticipate all of these.

Navigation that depends on context simply reflects them.

This is why context-based navigation scales where menus collapse.

It does not require foresight.

Only clarity.

The Shift in Responsibility

Rethinking navigation sources also clarifies ownership.

  • The system owns context.
  • The system owns capabilities.
  • The system owns authorization.
  • The UI owns rendering.

Navigation sits cleanly in between.

Once this boundary is respected, navigation stops being a coordination problem between teams.
It becomes an inevitable byproduct of a well-described system.

The remaining question is how that description travels across layers.

To answer that, we need to decouple navigation from URLs, routes, and UI structure and give the system a language of intention.

Intent-Based Navigation as a Unifying Language

If navigation is a projection of context, it needs a language that is independent of how the UI is structured.

This is where many systems stumble.

They derive navigation from URLs, routes, view hierarchies, or component trees.

All of these are implementation details.
They describe how something is reached, rather than what the user is trying to do.

URLs Are Not Intentions

A URL encodes location.

It tells the system which application to activate, which view to render, and which parameters to apply to make that view specific.

What it does not encode is intent.

Consider what a user actually means when they click a navigation entry:

  • “Show me all customers.”
  • “Create a new invoice.”
  • “Inspect this report.”
  • “Switch to admin mode.”
  • “Act as another user.”

None of these intentions are routes.
They are actions in a domain context.

When navigation is built around URLs, the system leaks its internal structure into the user experience.
The UI becomes tightly coupled to routing schemes, application boundaries, and delivery mechanisms.

This coupling makes change expensive.
Renaming a route suddenly becomes a navigation problem.
Splitting an app becomes a UX risk.

Intents Describe What

An intent-based model flips this relationship.

Instead of navigating to a route, the UI expresses what should happen in which semantic context.

An intent might represent opening a list, creating a resource, viewing a detail, launching a report, or starting a flow.

How that intent is fulfilled, which app, which view, which technology, is an implementation choice.

Navigation should express intention.

Delivery should be a system concern.

This separation is what allows navigation to remain stable while systems evolve.

One Language, Multiple Entry Points

Once navigation is expressed in terms of intent, an important unification happens.

The same intent can power different things.

  • primary navigation
  • contextual links
  • command palettes
  • global search
  • keyboard shortcuts
  • deep links

Instead of each interaction model inventing its own logic, they all speak the same language.

This reduces duplicated behavior, inconsistent access rules, and special-case handling.

It also improves explainability.
When something is unavailable, the system can explain why, because it understands the intent being requested.

Decoupling Without Losing Control

Intent-based navigation does not mean giving up structure.

On the contrary:
it forces the system to define its capabilities explicitly.

Each intent must be declared, scoped, authorized, and resolvable.

This pushes clarity back into the system layer.
Navigation becomes simpler precisely because the system becomes more explicit.

The UI does not decide what an intent does.
It merely requests that it be fulfilled.

At this point, navigation is no longer a fragile web of links.
It is a conversation between user intention and system capability.

But systems are built by teams – not individuals.

To scale navigation beyond a single codebase or team, one final dimension must be addressed:
organizational ownership.

That brings us to the next section.

Scaling Navigation Across Teams

Navigation does not only have to scale technically.

It has to scale organizationally.

This is where many otherwise solid navigation concepts quietly collapse.
Not because the model is wrong, but because ownership is unclear.

Navigation Is a Social Problem

In small teams, navigation decisions feel simple.
One or two people understand the whole system.
Changes are coordinated informally.

As teams grow, something changes.

Different groups become responsible for core domains, secondary features, admin tooling, reporting, integrations, or support workflows.

Yet navigation often remains centralized.
A single menu definition,
a shared configuration file,
or a UI-owned registry.

This creates tension.

Every new feature requires negotiating menu placement, understanding global structure, and avoiding conflicts with other teams.

Navigation turns into a bottleneck.

Central Menus Do Not Scale With Teams

A centralized menu assumes one global perspective on shared mental models and synchronized release cycles.

None of these scale well.

Teams move at different speeds.
They ship independently.
They own different contexts.

The menu, however, demands coordination.

As a result teams delay integration.
Features ship hidden, shortcuts proliferate, and consistency erodes over time.

The menu becomes political.

Make Ownership Explicit

A contributor-based model reframes the problem.

Instead of asking teams to edit a menu, the system asks them to declare intent.

Each team contributes the capabilities it owns and the intents it exposes for contexts in which they apply.

No team owns “the navigation.”
Each team owns its contribution to the system’s capabilities.

Navigation emerges as a composition of these contributions, filtered by context and authorization.

Navigation scales when ownership is local, but composition is global.

Slots Instead of Structures

Contributor-based navigation does not require a fixed hierarchy.

Instead of defining a global structure, the system defines slots, surfaces and contexts.

Contributors declare what they provide, where it is relevant and under which conditions it applies.

The system handles aggregation, filtering, ordering, and projection.

This eliminates an entire class of coordination problems.

Teams do not ask,
“Where do we put this in the menu?”

Instead, they ask,
“Which intent are we exposing, and in which context does it matter?”

Parallel Work Without Conflict

The practical effect is subtle but powerful.

Teams can:

  • ship independently
  • add new capabilities without refactoring navigation
  • remove features without breaking structure
  • reason locally while contributing globally

Navigation becomes additive, not fragile.

This mirrors a deeper architectural truth.
Systems scale when they allow parallel contribution without centralized arbitration.

From UI Governance to System Governance

In contributor-based models, navigation governance shifts layers.

From visual consistency, menu depth, and naming conventions to capability boundaries, intent clarity, context correctness, and explicit contracts.

The UI becomes simpler precisely because governance becomes stronger, but at the right layer.

At this point, the navigation model is complete:

  • context-driven
  • intent-based
  • contributor-owned

One critical dimension remains.

All of this assumes that the system is honest about who is acting, and on whose behalf.

That brings us to the most underestimated aspect of navigation: identity.

Identity as a First-Class Navigation Concern

Most navigation models treat identity as an afterthought.

A checkbox.

A role.

A condition that hides or shows entries.

In real systems, identity is far more consequential.

Identity Is Context

In complex SaaS environments, users are rarely just “users.”

They may be acting as themselves, acting as an administrator, acting on behalf of a customer, impersonating another user for support, or operating in a read-only or audit mode.

Each of these states changes what actions are meaningful.

If navigation does not reflect this explicitly, the system becomes misleading.

A menu that looks the same while identity changes is not neutral.

It lies by omission.

The Cost of Invisible Identity

When identity is hidden or implicit, systems compensate in fragile ways:

  • confirmation dialogs everywhere
  • unexpected permission errors after navigation
  • UI elements that disappear without explanation
  • “you are not allowed” screens reached too late

From the user’s perspective, this feels arbitrary.
From the system’s perspective, it signals a deeper issue:

The system knows who the user is, but navigation refuses to acknowledge it.

This disconnect erodes trust.

Users begin to hesitate.
Admins double-check actions.
Support staff fear making mistakes.

All because the navigation layer fails to surface identity truth.

Where Identity Becomes Visible

If navigation is a projection of context, identity must be part of that projection.

Not as a hidden flag.
Not as a silent condition.
But as a visible, structural element.

Good navigation makes identity explicit.

Who am I acting as?

In which scope?

With which authority?

Under which limitations?

This is not a UX flourish.

It is an architectural responsibility.

Impersonation Changes Everything

Impersonation exposes the weakness of menu-centric navigation immediately.

The moment a user acts on behalf of someone else, the system changes shape.
Permissions realign to reflect new authority, available actions shift to match that expanded role, and with each layer of access, responsibility deepens.

If navigation does not change accordingly, the system creates risk.

Either actions appear available when they should not be, or actions disappear without explanation.

Both outcomes are failures of system honesty.

A context-driven navigation model has no such blind spot.
Identity changes are just another context change and navigation updates naturally.

Truth Over Comfort

There is a temptation to hide complexity for the sake of simplicity.

In navigation, this backfires.

Users do not need fewer truths.
They need clearer ones.

When identity is first-class responsibility becomes visible.
Mistakes grow rarer because the system knows who is acting, and with that clarity, confidence naturally follows.

The system feels trustworthy, but because it is honest.

If users cannot tell who they are acting as, the system is not being transparent.

At this point the architectural model stands on its own.

What follows is not another framework but a shift in how we see it.

This isn’t really about navigation anymore.
It’s about keeping systems coherent as they evolve.

What This Enables

It would be easy to read the previous sections as a proposal for “better navigation.”

That would miss the point.

Context-driven, intent-based navigation is not an optimization.
It is a byproduct of a coherent system and a forcing function for keeping that coherence as the system grows.

When navigation is derived from context instead of configuration, several strategic effects emerge naturally.

Clarity Without Additional UI

The most immediate outcome is counterintuitive:
systems become clearer without adding interface elements.

Because navigation reflects real system state fewer explanations are needed, fewer warnings are required, and fewer exceptions must be taught.

Users understand what they can do simply by seeing what is available, and what is not.
The system stops surprising them.

Clarity is no longer achieved through instruction,
but through structural honesty.

Less Fragility

Configuration-based navigation accumulates exceptions.
Every exception increases fragility.

Context-driven navigation removes an entire class of special cases:

  • no duplicated permission logic
  • no role-specific menus to maintain
  • no frontend-only feature flags
  • no silent divergence between UI and backend

When something changes in the system, navigation changes with it automatically.

This reduces regression risk, coordination overhead, and fear of refactoring.

Systems become easier to evolve precisely because fewer things are manually wired together.

Faster Integration of New Capabilities

In many organizations, adding a feature is not the hard part.
Integrating it cleanly is.

Contributor-based, intent-driven navigation allows teams to ship capabilities independently.
New capabilities can be exposed immediately in the right contexts.
This avoids global restructuring on system integration level.

New features appear where they matter, not where someone remembered to place them.

This shortens the path from delivery to usability.

Reduced Cognitive Load for Developers

Navigation complexity is a tax on developers.

When navigation is configured manually, developers must constantly ask:

Where does this go?

Who owns this?

What breaks if I change it?

In a context-driven model, these questions disappear.
Developers focus on defining capabilities clearly, declaring their intent, by respecting system contracts.

Navigation emerges as a consequence, not a concern.

This is one of the strongest indicators of architectural health.

When developers stop thinking about navigation, and users benefit from it.

Governance Without Bureaucracy

Perhaps the most overlooked outcome is governance.

Traditional navigation governance relies on review processes, conventions, documentation, and informal rules.

Context-driven navigation enforces governance structurally.
If something is unclear, it becomes immediately visible.
If a capability is not declared, it cannot appear.

This creates natural boundaries, explicit ownership, and a shared language between teams.

Governance becomes a property of the system, not an organizational burden.

Navigation Becomes Continuity

All of these outcomes point to a larger truth:

This model is not about making navigation better.
It is about keeping systems coherent as they grow.

Navigation is simply the place where incoherence becomes visible first.

By treating navigation as a projection of context, systems gain a self-correcting mechanism.
They reveal when boundaries blur.
They expose missing contracts.
They surface architectural debt early, when it is still manageable.

At this point, the architectural argument is complete.

What remains is to acknowledge one final distinction:

This model describes how to think about navigation.
Implementing it well requires discipline and the right abstractions.

That bridge is where concrete systems enter the picture.

From Architecture to Implementation

Up to this point, everything described has been intentionally abstract.

That is not an academic choice.
It is a necessary one.

Architectural models only remain useful if they are not tied to a single stack, framework, or product.
Context-driven, intent-based navigation is a way of thinking – not a library to install.

And yet, systems do not live in essays.
They live in code.

At some point, architectural intent must become executable reality.

The Gap Between Theory and Practice

Many architectural ideas fail not because they are wrong,
but because they are too vague to implement consistently.

The moment teams try to turn principles into running systems, familiar questions appear:

Where does context actually live?

How is intent expressed and by whom?

How does authorization participate without leaking into the UI?

How do multiple teams contribute without stepping on each other?

How does the frontend render navigation without reintroducing heuristics?

Without clear answers, teams fall back to configuration.
Menus reappear.
Exceptions creep back in.

The architecture survives, but only in slides.

What an Implementation Must Provide

To support the model described in this essay, any concrete implementation must satisfy a few non-negotiable conditions.

  • Context must be explicit and inspectable

    Identity, scope, and capabilities cannot be implicit side effects.

  • Intents must be declared, not inferred

    The system needs a language for “what can happen,” independent of routing or UI structure.

  • Navigation must be derived, not authored

    There can be no second source of truth.

  • Contribution must be decentralized, composition centralized

    Teams declare what they own; the system decides how it appears.

  • The UI must render projections, not contain logic

    Otherwise, the boundary collapses again.

These requirements are demanding.
They rule out many common shortcuts.

But they also narrow the solution space enough to make disciplined implementation possible.

A Concrete Example

There are systems today that implement this model end to end.

One such implementation exists in the Laravel ecosystem (LaravelUi5/Sdk), built on top of OpenUI5.
It treats navigation not as a menu API, but as a projection of declared system capabilities.

In that system:

  • backend modules describe what they are and what they expose
  • identity and authorization are first-class runtime context
  • navigation is assembled dynamically from contributed intents
  • the frontend shell renders whatever the system reveals

Laravel is used for declaration and orchestration.
OpenUI5 is used for rendering and interaction.
But neither technology is the essence of the model.

They are merely one concrete realization.

The important part is not how it is implemented,
but that it can be implemented without falling back to configuration or UI-driven logic.

Why the Example Matters

Concrete implementations matter for one reason only:
they prove that the model is operational, not aspirational.

They show that:

  • context can remain explicit
  • navigation can stay derived
  • identity can be visible
  • teams can work independently
  • systems can grow without navigation becoming fragile

Once this is demonstrated, the discussion shifts.

The question is no longer,
Is this possible?

Instead, it becomes,
Why would we accept anything less?

Architecture First, Tools Second

This is the order that matters.

If the architectural model is sound, tools can be evaluated honestly.
If the model is missing, tools become substitutes for thinking.

The purpose of this essay is not to promote a particular stack.
It is to make the boundary visible and show that crossing it intentionally is both necessary and feasible.

The final step is to return to the core idea and state it plainly.

The North Star

Navigation is not something you build.

It is something your system reveals.

When navigation becomes difficult, cluttered, or fragile, it is rarely a design failure.
It is a signal.

A signal that context is implicit, responsibilities are blurred, identity is hidden, and that capabilities are not clearly described.

Trying to “fix” navigation in the UI treats the symptom, not the cause.

The alternative is not more configuration.
It is more honesty.

Honesty about who the user is, what the system can do, which actions are meaningful right now, and where responsibility truly lives.

When a system describes itself clearly, navigation follows naturally.

It stops being curated.

It stops being negotiated.

It stops being fragile.

It becomes a projection of truth.

This is why navigation deserves architectural attention.
Not because menus are important,
but because they are where systems first betray their own incoherence.

If there is one question worth asking after reading this essay, it is not:

“How should we redesign our navigation?”

It is this:

Where does our navigation come from and what does it say about our system?

Because in the end, navigation is not a UX artifact.

It is a mirror.

ᮿ

Read the deep dive

Implementing Context-Driven Navigation with Laravel & UI5.

Top comments (0)