Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(demo): custom bottom bar component #962

Merged
merged 19 commits into from
Oct 15, 2024
Merged

Conversation

flochtililoch
Copy link
Collaborator

@flochtililoch flochtililoch commented Oct 14, 2024

Fix double rendering of the custom bottom bar component by refactoring the following pieces:

  • context: switch to using the reducer pattern, and expose 3 methods: getElementProps, setElementProps, setElement.
  • core component: render any child element of the custom "non-render" element, not just the assumed single-child
  • custom element: set the registered attribute on the element upon setting the props in the context, to avoid re-render loops when the screen holding the custom element re-renders. This does not prevent server side updates of the tab bar.
  • update the demo app to factorize the markup for the tab bar as well as to show case the server updates of the tab bar.

Special thanks to @ehenighan for the thorough investigation and help solving #956.

Simulator.Screen.Recording.-.iPhone.16.Pro.-.2024-10-14.at.10.12.35.mp4

Summary by CodeRabbit

  • New Features

    • Introduced a notification badge design for the bottom tab bar.
    • Added a new tab bar component to manage notifications within the second tab.
  • Enhancements

    • Improved the BottomTabBar's context management with a reducer pattern for better state handling.
    • Streamlined the BottomTabBar component's logic and rendering process.
    • Enhanced tab navigation with a modular approach for dynamic rendering.
  • Bug Fixes

    • Resolved rendering loops in the BottomTabBar component.
  • Documentation

    • Updated context exports to prioritize the new custom hook for easier access.

Copy link

coderabbitai bot commented Oct 14, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

The changes in this pull request involve the introduction and modification of various components related to a bottom tab bar navigation system. New styles for notification badges are added, and existing styles are updated. The tab navigation structure is redefined to enhance modularity, with new XML files created for specific tab implementations. Additionally, the context management for the bottom tab bar is refactored to use a reducer pattern, improving state management. The BottomTabBar component is updated to utilize a custom hook for context access and to streamline its logic.

Changes

File Path Change Summary
demo/backend/_includes/macros/tabbar-bottom-tab/styles.xml.njk Added styles for tabbar-bottom-tab-content and tabbar-bottom-tab-notify.
demo/backend/_includes/macros/tabbar-bottom/index.xml.njk Added key="tabbar-bottom" attribute to <select-single> in tabbar_bottom macro.
demo/backend/_includes/macros/tabbar-bottom/styles.xml.njk Removed bottom and position properties from tabbar-bottom style.
demo/backend/navigation/navigator/bottom-tabs/tab-1.xml.njk Replaced bottom tab bar with a simple view structure; added selected_tab variable.
demo/backend/navigation/navigator/bottom-tabs/tab-2.xml.njk Updated tab structure to include buttons for notifications; added selected_tab variable.
demo/backend/navigation/navigator/bottom-tabs/tab-bar-notify-tab-2.xml.njk Created new file for notification management in tab 2; includes selected_tab and notify_tab.
demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk Introduced a new bottom tab bar component with dynamic rendering based on state.
demo/src/Components/BottomTabBar.tsx Updated to use useBottomTabBarContext and modified logic to prevent rendering loops.
demo/src/Contexts/BottomTabBar.tsx Refactored to use a reducer pattern for state management; introduced new context API.
demo/src/Contexts/index.ts Updated exports to include useBottomTabBarContext instead of BottomTabBarContext.
demo/src/Core/BottomTabBar/index.tsx Simplified component signature and updated logic to use new context and rendering methods.

Possibly related PRs

  • feat(hv-navigator): Option for custom tab bar component #950: The addition of the navigationComponents property in the NavigationContextProps type directly relates to the main PR's introduction of a custom bottom tab bar, as both involve enhancing navigation capabilities within the Hyperview framework.
  • feat(demo): Custom bottom tab bar component #951: This PR introduces a new BottomTabBar component that enhances the navigation experience by ensuring a single instance of the tab bar is used, which aligns with the main PR's focus on implementing a custom bottom tab bar.
  • fix(demo): BottomTabBar infinite loop #953: The fix for the infinite loop in the BottomTabBar component is relevant as it addresses stability issues that could arise from the changes made in the main PR regarding the bottom tab bar's implementation.

Suggested reviewers

  • palaparthi
  • hgray-instawork
  • adamstep

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (8)
demo/backend/navigation/navigator/bottom-tabs/tab-bar-notify-tab-2.xml.njk (1)

1-7: Consider adding inline documentation

While the file is well-structured and aligns with the PR objectives, consider adding some inline comments to improve clarity:

  1. Explain the purpose of this specific file in the context of the tab bar system.
  2. Briefly describe how the selected_tab and notify_tab variables are used in the included template.
  3. If there are similar files for other tab states, mention this to provide context on the overall structure.

This documentation would help other developers understand the modular approach you're using for the tab bar system.

demo/backend/_includes/macros/tabbar-bottom/index.xml.njk (1)

6-6: LGTM! Consider making the key value dynamic.

The addition of the key attribute to the <select-single> element is a good improvement. It aligns with best practices for list rendering in many frameworks and can help with performance and update reconciliation.

To enhance flexibility, consider making the key value dynamic:

-    <select-single style="tabbar-bottom" name="tabbar-bottom" key="tabbar-bottom">
+    <select-single style="tabbar-bottom" name="tabbar-bottom" key="tabbar-bottom-{{ target }}">

This change would allow for multiple unique tab bars if needed in the future, while maintaining the current functionality.

demo/backend/navigation/navigator/bottom-tabs/tab-1.xml.njk (1)

13-13: Good addition of selected_tab variable.

The introduction of the selected_tab variable is a good way to track the active tab. For improved clarity, consider adding a comment explaining its purpose.

Consider adding a comment like this:

+  {# Set the currently selected tab #}
  {% set selected_tab = 1 %}
demo/backend/_includes/macros/tabbar-bottom-tab/styles.xml.njk (1)

41-52: LGTM: New notification badge style enhances UI feedback

The tabbar-bottom-tab-notify style introduces a visually appealing notification badge for the tab bar. This small, red circle positioned at the top-right of the tab provides a clear visual cue for users, enhancing the UI's feedback mechanism.

While this addition wasn't explicitly mentioned in the PR objectives, it aligns well with the overall goal of improving the bottom bar component.

Consider adding a minWidth property to ensure the badge remains visible even when scaled down on smaller devices:

 <style
   id="tabbar-bottom-tab-notify"
   backgroundColor="#d92b2b"
   position="absolute"
   top="0"
   right="0"
   height="6"
   width="6"
+  minWidth="6"
   borderWidth="2"
   borderColor="#d92b2b"
   borderRadius="6"
 />
demo/src/Components/BottomTabBar.tsx (1)

31-36: LGTM: Improved rendering control, but consider memoization

The changes in the useEffect hook effectively address the double rendering issue mentioned in the PR objectives. The new condition prevents setElementProps from being called multiple times for the same element, which is a good optimization.

Adding setElementProps to the dependency array is correct according to React's rules of hooks. However, this might cause the effect to run more often than necessary if setElementProps is recreated on every render of the parent component.

Consider memoizing the setElementProps function in the parent component or context provider to prevent unnecessary effect runs. You can use the useCallback hook for this purpose:

const setElementProps = useCallback((navigator, props) => {
  // existing implementation
}, [/* dependencies */]);

This would ensure that setElementProps only changes when its dependencies change, potentially reducing unnecessary effect runs in this component.

demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk (1)

8-49: Well-implemented tab options with room for improvement.

The structure and implementation of individual tab options are consistent and well-organized. The use of conditional rendering for selection states and notifications is appropriate and aligns with the PR objectives.

Consider extracting the tab option structure into a separate template file. This would improve maintainability and make it easier to add or modify tabs in the future. For example:

<!-- tab-option.xml.njk -->
<option
  {% if selected_tab == tab_id %}
    selected="true"
  {% endif %}
  style="tabbar-bottom-tab"
  value="custom-tab-{{ tab_id }}"
>
  <behavior trigger="select" action="navigate" target="custom-bottom-tabs-tab-{{ tab_id }}" />
  <view style="tabbar-bottom-tab-content">
    <view style="tabbar-bottom-tab-icon-selected">
      {% include tab_icon_selected %}
    </view>
    <view style="tabbar-bottom-tab-icon">
      {% include tab_icon %}
    </view>
    <text style="tabbar-bottom-tab-label">{{ tab_label }}</text>
    {% if notify_tab == tab_id %}
      <view style="tabbar-bottom-tab-notify" />
    {% endif %}
  </view>
</option>

Then, in the main file:

{% include "tab-option.xml.njk" with {
  tab_id: 1,
  tab_icon_selected: 'icons/behaviors-selected.svg',
  tab_icon: 'icons/behaviors.svg',
  tab_label: 'Tab 1'
} %}

{% include "tab-option.xml.njk" with {
  tab_id: 2,
  tab_icon_selected: 'icons/advanced-selected.svg',
  tab_icon: 'icons/advanced.svg',
  tab_label: 'Tab 2'
} %}

This approach would make it easier to maintain and extend the tab bar in the future.

demo/backend/navigation/navigator/bottom-tabs/tab-2.xml.njk (1)

19-19: Consider removing href="#" from the reload behavior

When using action="reload", specifying href="#" may be unnecessary or could lead to unintended behavior. Omitting the href attribute can simplify the behavior and ensure it reloads the current view correctly.

Apply this diff to remove the unnecessary href attribute:

-        <behavior action="reload" href="#" />
+        <behavior action="reload" />
demo/src/Contexts/BottomTabBar.tsx (1)

74-74: Consider renaming parameter p back to props for clarity

Changing the parameter name from props to p may reduce readability. Using props is a common convention in React components and can improve code clarity.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 574ff4b and 2827e4e.

📒 Files selected for processing (11)
  • demo/backend/_includes/macros/tabbar-bottom-tab/styles.xml.njk (1 hunks)
  • demo/backend/_includes/macros/tabbar-bottom/index.xml.njk (1 hunks)
  • demo/backend/_includes/macros/tabbar-bottom/styles.xml.njk (0 hunks)
  • demo/backend/navigation/navigator/bottom-tabs/tab-1.xml.njk (1 hunks)
  • demo/backend/navigation/navigator/bottom-tabs/tab-2.xml.njk (1 hunks)
  • demo/backend/navigation/navigator/bottom-tabs/tab-bar-notify-tab-2.xml.njk (1 hunks)
  • demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk (1 hunks)
  • demo/src/Components/BottomTabBar.tsx (3 hunks)
  • demo/src/Contexts/BottomTabBar.tsx (1 hunks)
  • demo/src/Contexts/index.ts (1 hunks)
  • demo/src/Core/BottomTabBar/index.tsx (1 hunks)
💤 Files with no reviewable changes (1)
  • demo/backend/_includes/macros/tabbar-bottom/styles.xml.njk
🧰 Additional context used
🔇 Additional comments (22)
demo/src/Contexts/index.ts (1)

1-4: Approve the API change to use a hook-based approach.

The replacement of BottomTabBarContext with useBottomTabBarContext in the exports is a positive change. It aligns with React's hooks pattern and provides better encapsulation of the context implementation details. This approach is generally considered a best practice for managing and accessing context in functional components.

To ensure this change doesn't break existing code, please run the following script to check for any remaining usages of BottomTabBarContext:

If the script returns any results, those locations will need to be updated to use the new useBottomTabBarContext hook.

✅ Verification successful

Verification Successful: No direct usages of BottomTabBarContext found.

All references to BottomTabBarContext have been correctly replaced with useBottomTabBarContext. The export of BottomTabBarContextProvider remains appropriate and does not impact the verification.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any remaining usages of BottomTabBarContext

# Test: Search for direct imports or usages of BottomTabBarContext
# Expect: No results, as it should have been replaced with useBottomTabBarContext
rg --type typescript --type javascript 'import.*BottomTabBarContext|useContext\(BottomTabBarContext\)'

Length of output: 139


Script:

#!/bin/bash
# Description: Check for any remaining usages of BottomTabBarContext

# Test: Search for direct imports or usages of BottomTabBarContext
# Expect: No results, as it should have been replaced with useBottomTabBarContext

rg --glob '*.ts' --glob '*.tsx' 'import.*BottomTabBarContext|useContext\(BottomTabBarContext\)'

Length of output: 357

demo/backend/navigation/navigator/bottom-tabs/tab-bar-notify-tab-2.xml.njk (4)

1-4: LGTM: Proper use of YAML front matter

The YAML front matter is correctly structured and defines the permalink for this page. This is good practice for static site generators and helps with routing.


5-6: LGTM: Clear variable declaration

The variables selected_tab and notify_tab are clearly defined with meaningful names. Setting both to 2 indicates that the second tab is both selected and has a notification, which aligns with the file name.


7-7: LGTM: Modular template inclusion

Including the tab-bar.xml.njk template promotes code reuse and maintainability. This approach aligns with the PR objective of streamlining the markup for the tab bar.


1-7: Approved: Effective implementation of modular tab bar configuration

This file successfully implements a modular approach to configuring tab bar states, which aligns well with the PR objectives. The structure is clean, easy to understand, and promotes maintainability and reusability.

Key benefits:

  1. Modular design allows for easy creation of different tab bar configurations.
  2. Clear separation of concerns between configuration and implementation.
  3. Supports the goal of demonstrating server updates to the tab bar effectively.

Great job on improving the demo application's structure!

demo/backend/navigation/navigator/bottom-tabs/tab-1.xml.njk (3)

10-12: Simplified structure with improved scrollability.

The introduction of a scrollable view with the description macro is a good improvement. It simplifies the structure while maintaining functionality.


10-14: Overall improvements align well with PR objectives.

The changes in this file significantly simplify the structure and adopt a more modular approach, which aligns well with the PR objectives of addressing double rendering and streamlining the markup. The separation of the tab bar into a separate file (tab-bar.xml.njk) should improve maintainability and potentially help prevent re-render loops.

However, to ensure full functionality:

  1. Verify that the tab switching logic is properly implemented in tab-bar.xml.njk.
  2. Confirm that server-side updates to the tab bar are still possible with this new structure.

To verify the tab switching logic, please review the content of tab-bar.xml.njk (as requested in the previous verification script) and check for the presence of navigation logic between tabs.


14-14: Good modularization with tab-bar.xml.njk inclusion.

The inclusion of a separate tab-bar.xml.njk file is a great step towards modularization. This should improve maintainability and reusability of the tab bar component.

Let's verify the existence and content of the included file:

✅ Verification successful

Verification Successful: tab-bar.xml.njk Confirmed

The tab-bar.xml.njk file exists and its content aligns with the requirements, ensuring improved modularization and maintainability.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the existence and content of tab-bar.xml.njk

# Test 1: Check if the file exists
if fd -p "demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk"; then
    echo "tab-bar.xml.njk file found."
else
    echo "Error: tab-bar.xml.njk file not found."
    exit 1
fi

# Test 2: Display the content of the file
echo "Content of tab-bar.xml.njk:"
cat $(fd -p "demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk")

Length of output: 2166

demo/backend/_includes/macros/tabbar-bottom-tab/styles.xml.njk (2)

36-40: LGTM: New style enhances tab content layout

The new tabbar-bottom-tab-content style improves the layout of tab content by centering items vertically and establishing a relative positioning context. This change aligns with the PR's objective of refactoring the bottom bar component and provides a consistent structure for tab content.


36-52: Summary: Positive enhancements to the bottom tab bar styles

The introduced styles, tabbar-bottom-tab-content and tabbar-bottom-tab-notify, significantly improve the bottom tab bar component. They provide better structure for tab content and introduce a notification feature, enhancing both the functionality and visual feedback of the UI. These changes align well with the PR's objective of refactoring and improving the bottom bar component.

demo/src/Components/BottomTabBar.tsx (3)

2-2: LGTM: Improved context usage with custom hook

The change from importing BottomTabBarContext to useBottomTabBarContext is a good improvement. Using a custom hook for context access encapsulates the context usage, potentially providing additional functionality or error handling. This change aligns with React best practices for managing context.


Line range hint 1-45: Summary: Changes effectively address PR objectives

The modifications in this file align well with the PR objective of addressing double rendering in the custom bottom bar component. Key improvements include:

  1. Switching to a custom hook for context access, improving code organization.
  2. Implementing a mechanism to prevent multiple calls to setElementProps for the same element.
  3. Correctly updating the useEffect dependencies.

These changes should effectively resolve the rendering issues mentioned in the PR description. The code is now more robust and efficient in handling the bottom tab bar logic.


22-22: LGTM: Simplified context usage, but verify if other context values are needed

The change to destructure setElementProps from useBottomTabBarContext is good. It simplifies the code and makes it clear which part of the context is being used.

However, let's verify if other context values were previously used and are still needed:

✅ Verification successful

Verified: Only setElementProps is used from useBottomTabBarContext

The destructuring of setElementProps from useBottomTabBarContext is appropriate and does not impact other context values within BottomTabBar.tsx.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for any other uses of BottomTabBarContext in the component

# Test: Search for other uses of BottomTabBarContext or ctx in this file
rg --type typescript 'BottomTabBarContext|ctx' demo/src/Components/BottomTabBar.tsx

Length of output: 120


Script:

#!/bin/bash
# Description: Check for any other uses of BottomTabBarContext or ctx in BottomTabBar.tsx

# Test: Search for other uses of BottomTabBarContext or ctx in the specified file
rg --type ts --max-columns=200 'BottomTabBarContext|ctx' demo/src/Components/BottomTabBar.tsx

Length of output: 274

demo/backend/navigation/navigator/bottom-tabs/tab-bar.xml.njk (2)

1-6: LGTM: Component declaration and namespaces are well-structured.

The component declaration, namespace usage, and attributes are correctly implemented. This provides a solid foundation for the custom bottom tab bar component.


7-50: Well-structured tab bar implementation aligns with PR objectives.

The use of <select-single> for the tab bar structure is appropriate and supports mutually exclusive tab selection. This implementation aligns well with the PR objective of addressing double rendering issues while still allowing for server-side updates of the tab bar.

demo/backend/navigation/navigator/bottom-tabs/tab-2.xml.njk (3)

7-7: Importing the 'button' macro is appropriate

The button macro is correctly imported to support the button components used below.


18-18: Confirm the usage of the hide attribute in attributes

Ensure that hide:"true" in the attributes dictionary correctly hides the "Remove notification" button initially. Verify that hide is the correct attribute according to the framework's conventions; it might need to be hidden or another attribute depending on the implementation.


22-23: Setting selected_tab correctly for tab bar inclusion

The selected_tab variable is appropriately set to 2, ensuring that the tab bar highlights the current tab. Including tab-bar.xml.njk integrates the tab bar component as expected.

demo/src/Core/BottomTabBar/index.tsx (3)

18-19: Safe use of optional chaining with getElementProps and onUpdate

Good use of optional chaining to safely access getElementProps and onUpdate, preventing potential runtime errors when these properties are undefined.


31-31: Dependencies in useCallback are correctly specified

The dependency array [id, setElement, onUpdate] in the useCallback hook is appropriately set, ensuring that the callback updates when these dependencies change.


37-42: Proper use of Render.renderChildren

The Render.renderChildren function is correctly utilized to render the children elements with the updated onUpdateCustom callback and other necessary props.

demo/src/Contexts/BottomTabBar.tsx (1)

44-72: Refactoring to use reducer pattern enhances state management

Great job refactoring the context to use the useReducer hook. This improves state management by making updates more predictable and scalable, especially as the state logic grows in complexity.

demo/src/Core/BottomTabBar/index.tsx Outdated Show resolved Hide resolved
demo/src/Core/BottomTabBar/index.tsx Outdated Show resolved Hide resolved
demo/src/Contexts/BottomTabBar.tsx Outdated Show resolved Hide resolved
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 2827e4e and 70c4baa.

📒 Files selected for processing (1)
  • demo/src/Core/BottomTabBar/index.tsx (2 hunks)
🧰 Additional context used
🔇 Additional comments (2)
demo/src/Core/BottomTabBar/index.tsx (2)

14-19: Good use of context and optional chaining

The code correctly retrieves getElementProps and setElement from the context and safely accesses props using optional chaining. This enhances robustness and prevents potential errors if getElementProps is undefined.


21-32: Correct use of useCallback with appropriate dependencies

The onUpdateCustom function is properly memoized using useCallback, and the dependency array includes all necessary dependencies (id, setElement, onUpdate). This ensures that the callback updates correctly when any of these values change, preventing unnecessary re-renders.

demo/src/Core/BottomTabBar/index.tsx Show resolved Hide resolved
flochtililoch added 17 commits October 14, 2024 13:58
Remove most excluded path from schema validation, except for the share behaviors which should likely be moved to a custom behavior.
Although deprecated, bring back in sync with text-input
allow arbitrary strings - since IDs of navigators are not in the same doc.
These files are only meant to be included and should not generate static files (so they are not served nor XML validated). Ultimately we will want to segregate private and public files
@flochtililoch flochtililoch changed the base branch from master to florent/fix-demo October 15, 2024 01:47
Base automatically changed from florent/fix-demo to master October 15, 2024 15:13
@flochtililoch flochtililoch merged commit a3c783a into master Oct 15, 2024
6 checks passed
@flochtililoch flochtililoch deleted the florent/bottom-tabs branch October 15, 2024 21:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants