Bird
Raised Fist0
Remixframework~20 mins

Creating routes in Remix - Practice Exercises

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Remix Routing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does this Remix route component render?
Consider this Remix route component code. What will be displayed on the page when this route is visited?
Remix
export default function RouteComponent() {
  return <h1>Welcome to Remix!</h1>;
}
AA page showing the text: 'Welcome to Remix!'
BA blank page with no content
CAn error message because the component is missing a return statement
DA page showing the text: 'Hello World!'
Attempts:
2 left
💡 Hint
Look at what the component returns inside the JSX.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a nested route in Remix?
You want to create a nested route under the path '/dashboard/settings'. Which file structure and code snippet correctly defines this nested route?
ACreate a folder 'dashboard' with a file 'settings.tsx' inside it exporting a default component.
BCreate a file 'dashboard-settings.tsx' at the root routes folder exporting a default component.
CCreate a file 'dashboard.tsx' and inside it define a nested component for settings.
DCreate a folder 'settings' with a file 'dashboard.tsx' inside it exporting a default component.
Attempts:
2 left
💡 Hint
Nested routes in Remix use folders for parent routes and files inside for children.
❓ state_output
advanced
2:00remaining
What is the output of this loader function in a Remix route?
Given this loader function in a Remix route, what will be the JSON response when the route is accessed?
Remix
import { json } from '@remix-run/node';

export async function loader() {
  return json({ message: 'Hello from loader!' });
}
AA blank response with status 204
BA JavaScript error because json is not imported
C{"message":"Hello from loader!"}
DAn HTML page with the text 'Hello from loader!'
Attempts:
2 left
💡 Hint
The loader returns a JSON response using Remix's json helper.
🔧 Debug
advanced
2:00remaining
Why does this Remix route fail to load?
This route file is named 'profile.tsx' and contains this code. Why does the route fail to load?
Remix
import { json } from '@remix-run/node';

export function loader() {
  return { user: 'Alice' };
}

export default function Profile() {
  return <div>Profile Page</div>;
}
AThe default export is missing, so the route cannot render.
BThe loader must return a Response or use Remix's json helper, returning a plain object causes an error.
CThe file name 'profile.tsx' is invalid for a route.
DThe loader function must be async, synchronous loaders are not allowed.
Attempts:
2 left
💡 Hint
Check what the loader function returns and Remix's expected format.
🧠 Conceptual
expert
3:00remaining
How does Remix determine which route file to load for the URL '/blog/2024/06/15'?
Given these route files in Remix: - routes/blog.tsx - routes/blog/$year.tsx - routes/blog/$year/$month.tsx - routes/blog/$year/$month/$day.tsx Which route file will Remix use to render the URL '/blog/2024/06/15'?
Aroutes/blog/$year.tsx
Broutes/blog/$year/$month.tsx
Croutes/blog.tsx
Droutes/blog/$year/$month/$day.tsx
Attempts:
2 left
💡 Hint
Remix matches routes by the most specific path segments first.

Practice

(1/5)
1. In Remix, how do you create a new route that matches the URL path /about?
easy
A. Create a file named about.jsx inside the app/routes folder.
B. Add a function named about() in app/root.jsx.
C. Create a folder named about inside app/components.
D. Add a route entry in a routes configuration file.

Solution

  1. Step 1: Understand Remix routing structure

    Remix creates routes based on files inside the app/routes folder.
  2. Step 2: Match file name to URL path

    To create a route for /about, create about.jsx inside app/routes.
  3. Final Answer:

    Create a file named about.jsx inside the app/routes folder. -> Option A
  4. Quick Check:

    Route file name = URL path [OK]
Hint: Route files in app/routes match URL paths directly [OK]
Common Mistakes:
  • Trying to add routes in root.jsx instead of app/routes folder
  • Creating route files in app/components folder
  • Expecting a config file for routes
2. Which of the following is the correct way to define a dynamic route parameter for a user ID in Remix?
easy
A. Create a file named user-$id.jsx inside app/routes.
B. Create a file named user/[id].jsx inside app/routes.
C. Create a file named user/:id.jsx inside app/routes.
D. Create a file named user/{id}.jsx inside app/routes.

Solution

  1. Step 1: Recall Remix dynamic route syntax

    Remix uses square brackets [param] in file names to define dynamic route parts.
  2. Step 2: Match dynamic user ID route

    For a user ID parameter, the file should be named user/[id].jsx.
  3. Final Answer:

    Create a file named user/[id].jsx inside app/routes. -> Option B
  4. Quick Check:

    Dynamic route uses [param] syntax [OK]
Hint: Use square brackets [param] for dynamic route files [OK]
Common Mistakes:
  • Using $id or :id instead of [id]
  • Using curly braces {id} which is invalid
  • Placing dynamic routes outside app/routes
3. Given the file app/routes/blog/[slug].jsx exporting a React component that renders <h1>{params.slug}</h1>, what will be rendered when visiting /blog/hello-world?
medium
A. Nothing, route not found
B.

[slug]

C.

blog/hello-world

D.

hello-world

Solution

  1. Step 1: Understand dynamic route parameter usage

    The file [slug].jsx captures the URL part after /blog/ as slug.
  2. Step 2: Rendered output for /blog/hello-world

    The component renders <h1>{params.slug}</h1>, so params.slug is hello-world.
  3. Final Answer:

    <h1>hello-world</h1> -> Option D
  4. Quick Check:

    Dynamic param value = hello-world [OK]
Hint: Dynamic route param matches URL segment inside [brackets] [OK]
Common Mistakes:
  • Expecting literal [slug] text to render
  • Confusing full path with param value
  • Assuming route does not exist
4. You created a file app/routes/profile.jsx but visiting /profile shows a 404 error. What is the most likely cause?
medium
A. The file does not export a React component as default.
B. The file name should be profile.js instead of profile.jsx.
C. You need to add a route entry in a config file.
D. The route path should be /profiles to match the file.

Solution

  1. Step 1: Check route file export requirements

    Remix requires route files to export a React component as the default export.
  2. Step 2: Identify cause of 404 error

    If the file exists but does not export a default React component, Remix treats it as no route, causing 404.
  3. Final Answer:

    The file does not export a React component as default. -> Option A
  4. Quick Check:

    Default export React component required [OK]
Hint: Always export a default React component in route files [OK]
Common Mistakes:
  • Using named exports only without default export
  • Wrong file extension causing import issues
  • Expecting config file for routes
5. You want to create nested routes for a blog: /blog shows a list, and /blog/[postId] shows a post detail. How should you organize files in app/routes?
hard
A. Create blog.jsx and blog/[postId].jsx inside app/routes.
B. Create blog/index.jsx and blog-postId.jsx inside app/routes.
C. Create a folder blog with index.jsx and [postId].jsx inside it.
D. Create blog-list.jsx and blog-post.jsx inside app/routes.

Solution

  1. Step 1: Understand nested route folder structure

    Remix supports nested routes by creating folders with an index.jsx file for the base path.
  2. Step 2: Organize blog routes

    Put index.jsx inside blog folder for /blog, and [postId].jsx for dynamic post detail.
  3. Final Answer:

    Create a folder blog with index.jsx and [postId].jsx inside it. -> Option C
  4. Quick Check:

    Nested routes use folders with index.jsx [OK]
Hint: Use folder with index.jsx for base route, dynamic files for params [OK]
Common Mistakes:
  • Placing all files flat without folders for nested routes
  • Using dash instead of brackets for dynamic routes
  • Naming files incorrectly for nested paths
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard