Search and arcade editing serve different purposes, yet both wait for input and release browser resources when a dialog closes. For example, fixing the same dialog-exit problem independently on several screens can leave one copy behind. Maintaining consistent behavior becomes more expensive as copies spread.
A Kit groups reusable behavior in one package. Musecat extracted presentation, accessibility, time calculations and browser mechanisms that do not depend on a particular feature. Search targets and editing permissions remain in product code, where their meaning can be understood.
UIKit supplies dialog, input, transition and media behavior. FunctionKit provides reusable mechanisms for time, dates, location and browser capabilities. WebCore decides what a search means, which actions are allowed and what to save; DataKit handles server data and authentication. DataKit may also use product-neutral FunctionKit behavior.
Dependencies point from product code toward the Kits. If a shared package imported an arcade route or a product role, its other consumers would inherit those assumptions. Public entry points expose supported behavior without making consumers depend on internal file locations.
Search can wait briefly for typing to pause before making a request. Starting a timer, cancelling the previous wait and cleaning up on unmount are reusable FunctionKit mechanisms. Deciding whether to search unfinished composition, how to handle empty input and how to order results belongs to search itself.
An older response must not overwrite a newer query. The feature cancels obsolete requests and checks which input a response belongs to. Original-query and keyboard-correction requests also have different failure meanings: original-query failure produces an error, while an optional correction failure preserves valid original results. Successful results merge with duplicates removed.
Dialogs follow a similar allocation of responsibility. UIKit owns presentation and closing lifecycle; the feature supplies unsaved-change intent and any navigation after saving.
A package fix reaches the screens using that shared mechanism. Public exports and package tests describe supported behavior, reducing the chance that an internal reorganization unexpectedly changes a consumer.
Similar-looking screens do not automatically need one configuration object. Features with different meanings can compose the available parts directly. The aim is to maintain repeated mechanisms once while keeping product decisions understandable in their own code.
Related articles and sources: Engineering history